Method generating an input in an omnidirectional locomotion system

ABSTRACT

A virtual environment can use an absolute orientation framework. An absolute orientation framework in a virtual environment can be activated using an omnidirectional locomotion platform. An absolute orientation framework enables a user&#39;s avatar to move independently from the current viewpoint or camera position. The user&#39;s avatar can move in an absolute manner relative to a virtual environment map.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.14/663,433 filed Mar. 19, 2015, which claims benefit of U.S. applicationSer. No. 14/062,625 filed Oct. 24, 2013, and entitled “Locomotion Systemand Apparatus,” which is hereby incorporated herein by reference in itsentirety. This application claims benefit of U.S. provisionalapplication Ser. No. 61/955,767 filed Mar. 19, 2014, and entitled“Method and System of Decoupling a Locomotion and Virtual RealitySystem,” which is hereby incorporated herein by reference in itsentirety. This application claims benefit of U.S. provisionalapplication Ser. No. 61/981,149 filed Apr. 17, 2014, and entitled“Omnidirectional Locomotion System for Military Application,” which ishereby incorporated herein by reference in its entirety. Thisapplication claims benefit of U.S. provisional application Ser. No.62/004,550 filed May 29, 2014, and entitled “Support Tube System forVertical Movement of an Omnidirectional Locomotion Device,” which ishereby incorporated herein by reference in its entirety. Thisapplication claims benefit of U.S. provisional application Ser. No.62/099,426 filed Jan. 2, 2015, and entitled “An OmnidirectionalLocomotion System and Apparatus,” which is hereby incorporated herein byreference in its entirety. This application claims benefit of U.S.provisional application Ser. No. 62/127,261 filed Mar. 2, 2015, andentitled “An Omnidirectional Locomotion System and Apparatus,” which ishereby incorporated herein by reference in its entirety.

FIELD OF TECHNOLOGY

The present disclosure relates generally to an omnidirectionallocomotion system and apparatus that can be used in conjunction withvirtual reality systems, and more specifically to a hardware layout andsoftware methods of a omnidirectional locomotion system and relatedcomponents.

BACKGROUND

The present disclosure generally relates to locomotion devices that canbe used in conjunction with virtual reality systems.

Within a virtual reality environment, users typically desire the abilityto walk freely. In particular, the ability to physically walk or run inthe real environment and have that motion translated to the virtualenvironment significantly increases the level of immersion of the userin the virtual environment. However, movement in the real world is oftenlimited by physical space boundaries (e.g., the size of the room withinwhich the user is located). Accordingly, locomotion devices are designedto provide the user the sensation of walking freely, while confining theuser to a specific location. For example, many locomotion devices allowa user to walk freely, in 360 degrees, on a platform having a finitesize without ever leaving the platform.

Conventional locomotion devices include motorized and non-motorizeddesigns, which may be used in conjunction with virtual realityenvironments in a multitude of applications including, but not limited,to gaming. Examples of applications beyond gaming include employeetraining; combat training; physical therapy; exercise; virtual workenvironments; virtual meeting rooms (for both professional and personalpurposes); sports simulation and training; and virtual tourism,concerts, and events.

Motorized locomotion devices typically use sensors to detect themovement of the user and send feedback to motors driving belts orrollers on which the user moves. The belts or rollers are operated tocounter the user's movements and bring the user back to a centralportion of the platform after each step. There are many drawbacks tomotorized locomotion devices. For example, the motorized locomotiondevices are usually complex and expensive because of the rolling andmotorized components, sensors, processing units, and feedback loops. Inaddition, complex algorithms are required for the rolling and motorizedcomponents to properly counter the movements of the user. Inaccuratefeedback to the motor can result in erroneous movement of the belts orrollers that may cause the user to lose balance or drift away from thecenter of the platform. There may also be issues with latency offeedback and response when the user accelerates, causing incorrectmovements or responses that are too slow, potentially allowing the userwalk off the platform. Further, because the response movements of thebelts or rollers counteract the user's movements, the user may be proneto lose balance and trip.

In addition to issues with the operation of motorized locomotiondevices, such devices are usually large and bulky, and thus, do not fitin the average-sized residential room (e.g., a game room, living room,or bedroom) and can be difficult to break up into modular pieces forshipping and storage. The devices are necessarily large, to prevent theuser from walking off the platform before the correct system responsehas been processed; thus, rendering the devices unsuitable for in-homeconsumer usage.

Non-motorized locomotion devices lack motorized components and, thus,rely on the user's movement and/or gravity to bring the user back to thecenter of the platform after each step. Omnidirectional ball bearingplatforms, for example, have hundreds of ball bearings that allow theuser to walk in place while a restraint around the user's waist keepsthe user in place. A major issue with omnidirectional ball bearingplatforms is that the user does not experience a natural gait with aheel-toe strike movement, but rather instability similar to that ofwalking on ice. The instability results in the shuffling of feet whereneither heel nor toe lift off the device, resulting in an unnaturalwalking gait that reduces the immersion of the user in the virtualenvironment. Moreover, these devices are typically heavy and expensivedue to the plurality of rolling components.

Accordingly, there remains a need for locomotion devices that allowusers to safely access virtual environments while providing thesensation of a more natural walking gait.

SUMMARY

The embodiments described herein are generally directed to a locomotionsystem for use with a virtual environment technology comprising aplatform configured to support a user, a lower platform configured tosupport the platform and the user while entering the platform, anadjustable struts coupled to the platform and extending upwardly, atvariable heights, from the platform, wherein the harness supportassembly includes a support halo positioned above the platform andextending about a vertical central axis, and a harness configured to beworn by the user. The harness includes one or more sleds moveablycoupled to the support halo.

In an embodiment, a locomotion system for use with a virtual environmenttechnology comprises a platform configured to support a user, strutscoupled to the platform and extending upwardly from the platform,wherein the struts includes a support halo positioned above the platformand extending about a vertical central axis, and a harness including abelt configured to be worn by the user, one or more sleds coupled to thebelt, and a vertical member coupled to the belt. The sleds slidinglyengages an upper and lower surface of the support halo, and the verticalmember is disposed within the support halo and is configured to limitthe radial movement of the interface structure relative to the supporthalo.

In an embodiment, a harness for use in an omnidirectional locomotionsystem comprising a sit harness coupled to a support frame, two uppersleds removably coupled to the support frame by a connection rod,wherein the upper sled is located above a halo, two lower sledsremovably coupled to the support frame by a vertical member, wherein thelower sled is located below the halo.

In an embodiment, a virtual reality system comprises a locomotion systemincluding a platform configured to support a user, struts coupled to theplatform, and a harness configured to be worn by the user. The strutsinclude a support halo positioned above the platform and extending abouta vertical central axis, and wherein the harness is configured to moverelative to the support halo. The virtual reality system can furthercomprise one or more sensors, for example, inertial measurement unit(IMU) configured to detect, track, and transmit the motion of the userto a print circuit board, light emitting diodes (LED) configured todisplay status information to the user, a cabling system and panelconfigured to prevent accidental removal, and a visual display incommunication with the processing unit, and one or more accessoriesconfigured to be handled or used by the user.

The movement of a user in the omnidirectional locomotion system can bedetermined by data collected from the one or more sensors, for exampleIMUs. One or more sensors can be removably attached to the user'sfootwear, harness, accessory, head, arms, or any other location on theuser or user accessory. When the user begins movement in any directionthe sensors can stream raw gyro data to an aggregator board, for exampleat 100 Hz. The aggregator board can collect and analyze the data todetermine the angular velocity (rate of rotation per second) coming fromthe gyro that is perpendicular to the direction of the motion. In otherembodiments, the sensors can include, but are not limited to capacitancesensors, inertial sensors (IMU), ambient light sensors, magnetictracking sensors, acoustic sensors, pressure sensors, optical trackingsensors, hall effect sensor, and infrared sensors.

The term “coupled” refers to limitation of movement in the virtualenvironment with reference to the direction in which the user is lookingor where the camera is pointed within the virtual environment.

The term “decoupled” refers to the ability to move in the virtualenvironment independent of the direction in which the user is looking orthe camera is pointed within the virtual environment. In an embodiment,it refers to the ability of the user to walk in any direction on thevirtual reality platform (walk movements translated into gamepad inputfor a computer application that accepts gamepad input) independent of adirection in which the user is looking in the virtual environment.Movements when decoupled are therefore not bound by the direction of thecamera or display, when the user is moving, thus enabling a user to lookor have a display positioned in any angle, irrespective of the usersintended feet and body movement, motion, or direction.

The term “POD” refers generally to a specific type of sensor system,namely a sensor coupled with a multi-controller unit with short-rangewireless capabilities. In the present disclosure, the term POD can beinterchangeably with the term sensor. The present disclosure in generaldescribes a POD, however, other sensors can be implemented as well, forexample, capacitance sensors, inertial sensors (IMU), ambient lightsensors, magnetic tracking sensors, acoustic sensors, pressure sensors,optical tracking sensors, hall effect sensor, and infrared sensors.

Current video games use a relative orientation framework. Pushing ajoystick to the right or pressing “D” on a keyboard can move a user'savatar 90 degrees to the right from a current viewpoint or cameraposition. The current camera position can be obtained by measuring adirection of a head mounted display, for example, a virtual realityheadset. Thus in the relative orientation framework, movement can berelative to the current camera position. To further illustrate, pushingthe joystick up or “W” on the keyboard can move the user's avatar in theforward in the current camera position.

In an embodiment, a game can use an absolute orientation framework(decoupled framework). When a game is played using an omnidirectionallocomotion platform a user's avatar can move independently from thecurrent viewpoint or camera position. The user's avatar can move in anabsolute manner relative to an in-game map. For example, if the userwalks the direction north on omnidirectional locomotion platform, theuser's avatar can move north on the in-game map, regardless of thecurrent camera position. In an embodiment, the head mounted display caninclude a sensor, for example, a magnetometer. The sensor can use anabsolute orientation framework similar to omnidirectional locomotionplatform, wherein the current in-game camera position can be thedirection the user is physically looking outside the game.

In an embodiment, the direction “north” can be magnetic north or polarnorth. In another embodiment, the direction “north” can be a designateddirection set or calibrated at a start of a game. For example, a userwearing a head mounted display (virtual reality headset), can lookforward relative to the user's body during calibration, which cancalibrate the current forward looking direction with a forward walkingorientation prior to decoupling the current camera position and theuser's body position. In another embodiment, the halo or harness of anomnidirectional locomotion system, can include sensors to calibrate theforward position of a user with the forward orientation in-game prior todecoupling the current camera position and the user's body position. Inanother embodiment, upon initiation of a game the current position ofthe user outside of the game, determined by the sensors inomnidirectional locomotion platform, the harness, or the headset can becalibrated to the starting position of the game. For example, if anin-game user is initiated facing east, then the direction the outsideuser is facing when the game is initiated can be calibrated east.

In an embodiment, decoupling can be implemented in existing games.Existing games are not configured for decoupling, however the decouplingeffect can still be achieved by generating one or more keystrokes basedon the user's current camera position. For example, if the user walksforward on the omnidirectional locomotion platform while looking 90degrees to the left, decoupling can be accomplished by generating the“D” key or left movement key. The absolute orientation framework can beconverted to the relative orientation framework by taking into accountthe current camera direction. In another example, if the user walksforward on the omnidirectional locomotion platform while looking 45degrees to the right, achieving the decoupling effect can beaccomplished by generating the “W” and “A” keys simultaneously or in analternating manner. In another example, if the user walks forward on theomnidirectional locomotion platform while looking 15 degrees to theright, achieving the decoupling effect can be accomplished by generatingmore “W” keys than “A” keys.

In an embodiment, a method for detecting a quick stop on anomnidirectional locomotion system can comprise, receiving an angularvelocity at a predefined interval, determining a user movement based onthe angular velocity, applying a smoothing filter on the angularvelocity, determining when the angular velocity is equal or less than apredefined threshold, calculating a slope of the angular velocity,determining when the slope approaches zero for a predefined interval,determining the quick stop when the angular velocity is within thepredefined threshold and the slope approaches zero for a predefinedinterval.

In an embodiment, a locomotion system platform can include sensors,wherein the sensors can be used to determine characteristics of the useroperating the locomotion system. The sensors can be located on or withinthe platform, or on a user of the platform. Another embodiment, relatesto an absolute orientation framework, where a character is able to moveindependently from the camera position (which is the user's viewpoint).The direction a user is looking is ignored and the user can move in anabsolute way. If the user walks “north” on the locomotion system, theuser in the game will move North in the game, regardless of the cameraposition.

In an embodiment, a locomotion system platform can comprise one or moresensors distributed in a geometric pattern, one or more electronicallycoupled printed circuit boards, the one or more sensors electronicallycoupled to the one or more printed circuit boards, one or moremicro-controller units, the one or more micro-controller unitselectronically coupled to the one or more printed circuit boards and acomputer system. The micro-controller units can be electronicallycoupled to the printed circuit boards and computer system by short-rangewireless, for example Bluetooth, WI-FI, or NFS. The computer system canbe a server, gaming system, or mobile device, for example, an XBOX,PlayStation, Nintendo, a mobile phone, a tablet, a laptop, a smartphoneor a PDA. The sensors can include, but are not limited to capacitancesensors, inertial sensors (IMU), ambient light sensors, magnetictracking sensors, acoustic sensors, pressure sensors, optical trackingsensors, hall effect sensor, and infrared sensors. In anotherembodiment, the geometric pattern is concentric circles.

In an embodiment, a forward step can be generated when one or moresensors on a halo are activated. For example, one or more sensors in ahalo or platform can be activated by a capacitance reading. Capacitanceand time data from the activated sensor can be stored in a computersystem. A determination can be made if one or more adjacent sensors areactivated. In another embodiment, one or more sensors on a user can beactuated by an inertial measurement or optical measurement. A forwardstep can be generated.

In an embodiment, a velocity vector can be generated when one or moresensors on a halo are activated. For example, one or more sensors in ahalo or platform can be activated by a capacitance reading. Capacitanceand time data from the activated sensor can be stored in a computersystem. A determination can be made if one or more adjacent sensors areactivated. In another embodiment, one or more sensors on a user can beactuated by an inertial measurement or optical measurement. A velocityvector can be generated.

In an embodiment, a step direction can be calculated. One or moresensors can transmit location data and capacitance values to a computersystem. In another embodiment, one or more sensors can transmit inertialmeasurement or optical measurement values. The computer system cannormalize the location data of the one or more sensors. The computersystem can further weight the normalized position vectors. The computersystem can further accumulate the weighted normalized position vectors.The computer system can further normalize the accumulated vectors.

In an embodiment, a velocity of one or more steps can be calculated. Acomputer system can zero sensors, for example in a center zone. One ormore sensors can transmit location data and capacitance values to acomputer system. In another embodiment, one or more sensors can transmitinertial measurement or optical measurement values. The computer systemcan normalize the location data of the one or more sensors. The computersystem can further weight the normalized position vectors. The computersystem can further accumulate the weighted normalized position vectors.The computer system can further normalize the accumulated vectors. Thecomputer system can determine the length of the accumulated vector. Thecomputer system can calculate the velocity of the accumulated vector.

In an embodiment, a locomotion system platform can provide naturalvertical movement. The vertical movement can enable a user to crouch orjump while operating the locomotion system. The vertical movement cancomprise a ball bearing system, a spring counterweight, an overheardspring suspension, a pivot arm, a magnetic levitation, a hydraulicactuation, and/or a compressed gas system.

In an embodiment, a locomotion system can comprise a braking mechanism,specifically to prevent a user from falling. When a user is operatingthe locomotion system, a horizontal force is applied. The concave baseof the locomotion system, while enabling a user forward movement by theapplied horizontal force, can cause a user to fall or lose balance. Abraking mechanism can prevent a user from falling or losing balance bycounteracting the horizontal force. The braking mechanism can comprise acounter-weight, a frictional force, and cable brake.

In an embodiment, the locomotion system can accommodate an industrialuser. The locomotion system can accommodate a user using a weapon, forexample an M4 carbine. The locomotion system can further accommodate auser dressed in standard industrial gear and attire, for example amodular tactical vest, patrol pack, improved load bearing equipment(ILBE), and modular lightweight load-carrying equipment (MOLLE).

In an embodiment, the standard industrial gear can integrate with thelocomotion system, specifically, load bearing/carrying equipment canattach to the locomotion system harness. The attachment can be doneusing Pouch Attachment Ladder System (PALS).\

In an embodiment, a method of generating a gaming input comprisingcalculating a velocity, calculating a heading, translating the velocityand the heading into 2-dimensional Cartesian coordinates, normalizingthe 2-dimensional Cartesian coordinates into a minimum to maximum scalerange. In an embodiment, the velocity can be calculated by a distanceone or more of a user's foot travels divided by the time it took totravel the distance. In another embodiment, the velocity can becalculated by a pedometry rate, wherein the pedometry rate is determinedby monitoring a frequency of steps over a predefined interval. Inanother embodiment, the velocity can be calculated by monitoring anacceleration of one or more of a user's foot. In another embodiment, thevelocity is calculated by normalizing an angular velocity, wherein theangular velocity is a change in rotation of one or more of a user'sfoot. In another embodiment, the heading can be translated relative to areal world axis and the real world axis can be magnetic North. Inanother embodiment, the heading can be calibrated to a magnetic North toan initial orientation of a user by an offset. In another embodiment,the heading can be translated relative to an orientation of a user'storso. In another embodiment, the heading can be translated relative toan orientation of a user's head. In another embodiment, the minimum tomaximum scale range is defined by gaming input descriptors. In anotherembodiment, the Y 2-dimensional Cartesian coordinate is for forward orbackwards movement. In another embodiment, the X 2-dimensional Cartesiancoordinate is for sideways movement.

In another embodiment, a method of generating a stop gaming inputcomprising calculating a velocity, wherein the velocity is a change inrotation of one or more of a user's foot, normalizing the velocity,determining when the normalized velocity drops below a predefinedthreshold, determining when a slope of the normalized velocityapproaches zero for a predefined interval.

In another embodiment, a method comprising receiving one or more sensoroutput, calculating a velocity from the one or more sensor output,calculating a heading from the one or more sensor output, translatingthe velocity and the heading into 2-dimensional Cartesian coordinates,normalizing the 2-dimensional Cartesian coordinates into a minimum tomaximum scale range.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the features of the disclosurecan be obtained, a more particular description of the principles brieflydescribed above will be rendered by reference to specific examplesthereof which are illustrated in the appended drawings. Understandingthat these drawings depict only example embodiments of the disclosureand are not therefore to be considered to be limiting of its scope, theprinciples herein are described and explained with additionalspecificity and detail through the use of the accompanying drawings inwhich:

FIG. 1 illustrates an example harness system, in accordance with anexample embodiment of the present technology;

FIG. 2A and FIG. 2B illustrate an example sled connection of an exampleharness system, in accordance with an example embodiment of the presenttechnology;

FIG. 3 illustrates an example sled system of an harness system, inaccordance with an example embodiment of the present technology;

FIG. 4 illustrates an example handle and latching system of an examplesupport halo, in accordance with an example embodiment of the presenttechnology;

FIG. 5A and FIG. 5B illustrate an example latching system of an examplesupport halo, in accordance with an example embodiment of the presenttechnology;

FIG. 6A, FIG. 6B and FIG. 6C illustrate an example closed and exampleopen support halo, in accordance with an example embodiment of thepresent technology;

FIG. 7 is a top view illustrating an example support halo, in accordancewith an example embodiment of the present technology;

FIG. 8 illustrates an example attachment mechanism of an example supporthalo, in accordance with an example embodiment of the presenttechnology;

FIG. 9A, FIG. 9B, FIG. 9C, and FIG. 9D illustrate an example attachmentmechanism of a support halo, in accordance with an example embodiment ofthe present technology.

FIG. 10 illustrates an example strut system of an exampleomnidirectional locomotion platform system, in accordance with anexample embodiment of the present disclosure;

FIG. 11 illustrates an example strut support and release system, inaccordance with an example embodiment of the present technology;

FIG. 12A and FIG. 12B illustrate an example strut support at a highvertical level and low vertical level, respectively, in accordance withan example embodiment of the present technology;

FIG. 13 is a cross-sectional view illustrating an example strut andstrut base, in accordance with an example embodiment of the presenttechnology;

FIG. 14 is a cross-sectional view illustrating an example strut supportand release system, in accordance with an example embodiment of thepresent technology;

FIG. 15 is a cross-sectional view illustrating an example strut releasesystem, in accordance with an example embodiment of the presenttechnology;

FIG. 16 is a cross-sectional view illustrating an example strut andstrut base, in accordance with an example embodiment of the presenttechnology;

FIG. 17 illustrates an example auto-lock panel of an example auto-locksystem of a strut support and release system, in accordance with anexample embodiment of the present technology;

FIG. 18 is an internal view illustrating an example auto-lock system, inaccordance with an example embodiment of the present technology;

FIG. 19 is an internal view illustrating an example auto-lock system, inaccordance with an example embodiment of the present technology;

FIG. 20 is an internal view illustrating an example auto-lock system, inaccordance with an example embodiment of the present technology;

FIG. 21 illustrates an example platform, lower platform and cablemanagement system of an example omnidirectional locomotion system, inaccordance with an example embodiment of the present technology;

FIG. 22 illustrates a top cross-sectional view of an example supportstructure of an example platform and lower platform of anomnidirectional locomotion system, in accordance with an exampleembodiment of the present technology;

FIG. 23 illustrates an example cabling system, in accordance with anexample embodiment of the present technology;

FIG. 24 illustrates an example cabling system, in accordance with anexample embodiment of the present technology;

FIG. 25 is a block diagram illustrating an example POD system, inaccordance with an example embodiment of the present technology;

FIG. 26 is a block diagram illustrating an example POD system, inaccordance with an example embodiment of the present technology;

FIG. 27 is a block diagram illustrating an example POD system, inaccordance with an example embodiment of the present technology;

FIG. 28 is a block diagram illustrating an example aggregator board of asensor system, in accordance with an example embodiment of the presenttechnology;

FIG. 29 is a block diagram illustrating an example layering model of asensor system communication, in accordance with an example embodiment ofthe present technology;

FIG. 30 is a schematic diagram illustrating an example sensor layout, inaccordance with an example embodiment of the present technology;

FIG. 31 a schematic diagram illustrating an example aggregator boardlayout, in accordance with an example embodiment of the presenttechnology;

FIG. 32 is a block diagram illustrating an example sensor communicationsystem, in accordance with an example embodiment of the presenttechnology;

FIG. 33 is a flow diagram illustrating example method of decoupledmovements in an omnidirectional locomotion system, in accordance with anexample embodiment of the present disclosure;

FIG. 34 is a flow diagram illustrating an example method of coupledmovements in an omnidirectional locomotion system, in accordance with anexample embodiment of the present disclosure;

FIG. 35 is a flow diagram illustrating an example method of a quickstop, in accordance with an example embodiment of the presentdisclosure;

FIG. 36 is a graph illustrating an output from an example sensor system,in accordance with an example embodiment of the present disclosure;

FIG. 37 is a top view illustrating an example sensor layout of anexample omnidirectional locomotion system, in accordance with an exampleembodiment of the present disclosure;

FIG. 38 is a top view illustrating an example first and second slice ofan example omnidirectional locomotion 40 system, in accordance with anexample embodiment of the present disclosure;

FIG. 39 and FIG. 40 are flow diagrams illustrating example methods forgenerating a forward movement, in accordance with an example embodimentof the present disclosure;

FIG. 41 and FIG. 42 are flow diagrams illustrating example methods forgenerating a velocity vector using a locomotion system, in accordancewith an example embodiment of the present disclosure;

FIG. 43 is a flow diagram illustrating an example method for performingvelocity vector integration with third party, in accordance with anexample embodiment of the present disclosure;

FIG. 44 is a flow diagram illustrating an example method of calculatinga velocity vector, in accordance with an example embodiment of thepresent disclosure;

FIG. 45 is a flow diagram illustrating an example method for calculatinga velocity, in accordance with an example embodiment of the presentdisclosure;

FIG. 46A, FIG. 46B and FIG. 46C illustrate an example locomotion systemused for industrial applications, in accordance with an exampleembodiment of the present disclosure;

FIG. 47 is a cross-sectional view illustrating an example pulley systemof the locomotion system, in accordance with an example embodiment ofthe present disclosure;

FIG. 48 is a cross-sectional view illustrating an example of acounterweight system of the locomotion system, in accordance with anexample embodiment of the present disclosure;

FIG. 49 is a top view illustrating an example braking system of thelocomotion system, in accordance with an example embodiment of thepresent disclosure;

FIG. 50 is a top view illustrating an example braking system of thelocomotion system, in accordance with an example embodiment of thepresent disclosure;

FIG. 51 is a side view illustrating an example braking system of thelocomotion system, in accordance with an example embodiment of thepresent disclosure;

FIG. 52 illustrates an example MOLLE and PALS harness connection, inaccordance with an example embodiment of the present disclosure.

DETAILED DESCRIPTION

Various examples of the disclosure are discussed in detail below. Whilespecific implementations are discussed, it should be understood thatthis is done for illustration purposes only. A person skilled in therelevant art will recognize that other components and configurations canbe used without parting from the scope of the disclosure. In otherinstances, well-known methods, procedures, components, circuits, andnetworks have not been described in detail so as not to necessarilyobscure aspects of the embodiment.

It will also be understood that, although the terms first, second, etc.can be used herein to describe various elements, these elements shouldnot be limited by these terms. These terms are only used to distinguishone element from another. For example, a first sensor could be termed asecond sensor, and similarly, a second sensor could be termed a firstsensor, without departing from the scope of the present invention.

The terminology used in the description of the invention herein is forthe purpose of describing particular embodiments only and is notintended to be limiting of the invention. As used in the description ofthe invention and the appended claims, the singular forms “a”, “an” and“the” are intended to include the plural forms as well, unless thecontext clearly indicates otherwise. It will also be understood that theterm “and/or” as used herein refers to and encompasses any and allpossible combinations of one or more of the associated listed items. Itwill be further understood that the terms “comprises” and/or“comprising,” when used in this specification, specify the presence ofstated features, integers, steps, operations, elements, and/orcomponents, but do not preclude the presence or addition of one or moreother features, integers, steps, operations, elements, components,and/or groups thereof.

As used herein, the term “if” may be construed to mean “when” or “upon”or “in response to determining” or “in response to detecting,” dependingon the context. Similarly, the phrase “if it is determined” or “if [astated condition or event] is detected” may be construed to mean “upondetermining” or “in response to determining” or “upon detecting [thestated condition or event]” or “in response to detecting [the statedcondition or event],” depending on the context.

FIG. 1 illustrates an example full-body harness system 100. Chestharness 110 can be configured for use with sit harness 120 by connectors115 for added stability, balance, and ability to maintain uprightposition. In an embodiment, sit harness 120 can be used without chestharness 110. Chest harness 110 can include shoulder straps 113 and backstrap 114 connected by Y-connector 112. Shoulder straps 113 can includeshoulder pads 111 and can be extended or shortened by adjusters 116. Sitharness 120 can include a waist strap 122 with adjustable waist strapbuckle 123, back pad 121A for added support and adjustable leg loops124. Sit harness 120 can further include a support frame 127. Supportframe 127 can be comprised of hard plastic, metal, polymer, carbonfiber, any combination thereof, or any other material to support of auser's weight. Sleds 125 and vertical member 126 can be removablyattached to support frame 127.

FIG. 2A and FIG. 2B illustrate an example sled connection of a sitharness system 120. Bracket 129 can attach to sit harness 120 by backpad 121A, side pad 121B, waist strap 122 or a combination thereof.Connection rod 128 attaches to bracket 129 through support frame 127.Connection rod 128 can be supported by support frame 127. Connection rod128 can be configured as a telescoping rod enabling an extension inlength when a user of slighter statute is using sit harness 120 and ashortening in length when a user of larger statute is using sit harness120. Extension and shortening of connection rod 128 enables a connectionwith sleds 125 with a user of most any size. In another embodiment,connection rod 128 and bracket 129 can also be configured to slideforward and backwards along waist strap 122 of sit harness 120 to enableusers of slighter or larger statute to tighten or loosen sit harness 120and enable connection rod 128 to maintain a perpendicular position to auser's torso. In another embodiment, connection rod 128 can slide alongbracket 129. In another embodiment, bracket 129 can slide along waistharness 122. Support frame 127 can support connection rod 128, whichconnects sit harness 120 to support frame 127, for example to keep theuser from falling. The combination of connection rod 128 and bracket 129can be supported by support frame 127. Side pads 121B can provide addedcomfort and support for a user at the bracket 129 attach point.

FIG. 2A, FIG. 2B, and FIG. 3 illustrate an example sled connection of asit harness system 120 with halo 134. Sleds 125 and vertical members 126can be removably attached to support frame 127 by connection rods 128.Sleds 125 and vertical members 126 can be made of a low-frictionmaterial that glides on, inside, and underneath halo 134. Sleds 125 caninclude upper sleds 125A and lower sleds 125B. In an embodiment onlyupper sleds 125A can be configured for use. In another embodiment bothupper sleds 125A and lower sleds 125B are configured for use. Uppersleds 125A can be removably attached to connection rods 128. Lower sleds125B can be removably attached to vertical members 126. In anembodiment, lower sleds 125B can be attached further up or further downvertical members 126 enabling decreased or increased interaction betweenlower sleds 125B and halo 134, respectively. Sleds 125 can bedynamically independently configured to rotate with a user movement orstatically independently configured to not move with a user movement.The surface of sleds 125 can be of a rounded shape to minimize a contactarea between sleds 125 and halo 134. Rounded-shape sleds 125 can enablea smooth glide during impact with halo 134. Halo 134 can besubstantially torus shape to further minimize an impact area with sleds125.

Upper sleds 125A can be configured to sit on top of halo 134 and lowersleds 125B can be configured to sit below halo 134. Upper sleds 125A andlower sleds 125B can enable a user to move in 360 degrees whileproviding added stability and preventing the user from falling (in anydirection). In an embodiment, upper sleds 125A are configured for use,and lower sleds 125B are not configured for use, enabling the user thecapability to jump. In another embodiment, when both upper sleds 125Aand lower sleds 125B are configured for use, lower sleds 125B cancontain a sensor (for example a Hall effect sensors, pressure sensors orIMU) for detecting a user jump movement and upper sleds 125A can containa sensor (for example a Hall effect sensor, pressure sensor or IMU) fordetecting a user crouch movement. In another embodiment, verticalmembers 126, upper sleds 125A, lower sleds 125B, or any other locationon the sit harness 120, can include a sensor (for example, a Hall effectsensor, a pressure sensor or IMU sensor) configured to determine theorientation of sit harness 120 (and the orientation of the user'storso). In another embodiment, one or more Hall effect sensors can bearranged in or around halo 134. In another embodiment, one or more Halleffect sensors can be arranged in or around vertical members 126, uppersleds 125A, lower sleds 125B, or sit harness 120. One or more magnetscan be arranged in or around vertical members 126, upper sleds 125A,lower sleds 125B, and sit harness 120 to communicate with the Halleffect sensors in halo 134 or sit harness 120.

FIG. 3 illustrates an example sled connection of a sit harness system120 with halo 134. Upper sleds 125A can include a connection portion1252 for removably attaching to connection rod 128. In an embodiment,upper sleds 125A can be configured at different positions alongconnection rod 128 for increasing or decreasing impact with halo 134,for example, closer to or further from the base of connection rod 128.In another embodiment, upper sleds 125A can be locked in place toprevent rotation around connection rod 128. Upper sleds 125A can furtherinclude a front portion 1251 and a rear portion 1253, where a frontportion 1251 is shorter in length than a rear portion 1253 to provide auser with added stability. For example, an extended length of a rearportion 1253 can provide a user with added balance and prevent abackwards fall. In an embodiment, sleds 125A, can be rounded convex,concave, a flat surface, or any other shape as to minimize the contactsurface with the top of halo. In an embodiment, to prevent excessivenoise, upper sleds 125A can include a rubberized layer 1254 enabled todampen noise and impact of upper sleds 125A. In another embodiment,rubberized layer 1254 can be metal springs or any other material toreduce impact noise. In another embodiment to prevent excessive noise,impact portions of upper sleds 125A with halo 134 can be configured witha rubberized surface, metal springs or any other material to reduceimpact noise. In another embodiment, a sled can include full rollers toprovide easy forward and reverse movements of a user.

Lower sleds 125B can include connection portions 1255 for removablyattaching to vertical member 126. In an embodiment, lower sleds 125B canbe can be substantially the same length as upper sleds 125A. In anotherembodiment, lower sleds 125B can be of a smaller size or larger sizethan upper sleds 125A. The width of lower sleds 125B can be narrow tonot interfere with support struts. The impact portions of lower sleds125B, which can come into contact with halo 134, can be rounded to aiduser movement and minimize contact with halo 134. In another embodiment,the impact portion of lower sleds 125B can be rounded convex, concave, aflat surface, or any other shape as to minimize the contact surface withthe underside of halo 134 while maximizing the desired functionality ofpreventing tilt. During operation, lower sled 126B can prevent a userfrom excessive tilting and provide more stability and security to theuser, for example, when the user tilts forward or backwards,respectively the back or front of the lower sleds 125B impacts theunderside of halo 134 preventing further tilting providing morestability and security to the user. The space between halo 134 and lowersleds 125B can determine the amount of tilt for the user. The spacebetween halo 134 and lower sleds 125B can be altered by adjusting lowersleds 125B along vertical member 126. In an embodiment lower sleds 125Bcan be configured 0.25 inches below halo 134 providing the user withadded stability while still enabling the user a full range of motion.The length of the lower sleds 125B can determine the amount of forwardand backward tilt of a user, for example, a shorter length of lowersleds 125B enables the user more forward and backward tilt where alonger length of lower sleds 125B enables the user less forward andbackwards tilt. To prevent excessive noise, lower sleds 125B can includea rubberized layer (not shown) enabled to dampen noise and impact oflower sleds 125B. In another embodiment, the rubberized layer can bemetal springs or any other material to reduce impact noise. In anotherembodiment to prevent excessive noise, impact portions of lower sleds125B with halo 134 can be rubberized, metal springs or any othermaterial to reduce impact noise. In another embodiment, a sled caninclude full rollers to provide easy forward and reverse movements of auser.

FIG. 4 illustrates an omnidirectional locomotion system 130. Halo 134 ofan omnidirectional locomotion system 130 can include one or more handles131. Handles 131 can aid in adjusting a height of halo 134 by extendingor shortening struts 150. Halo 134 can also include a lever 132 foropening and closing door 133 for entering an omnidirectional locomotionsystem 130. In an embodiment, lever 132 can be a lift-up tail design. Inanother embodiment, lever 132 can be spring loaded. Lever 132 canfurther stay in an upright position when not closed for added safety.Door 133 and lever 132 can further include a safety pin (not shown) foradditional safety against accidental opening. FIG. 5A and FIG. 5Billustrate lever 133 with latching mechanism 137 and door 133 with hinge136. FIGS. 6A, 6B and 6C illustrate door 133 in different states: closedand unlocked, partial open, and fully open, respectively.

FIG. 7 is a top view illustrating an example halo 134 and relativepositioning of handles 131, lever 132, door 133, hinge 136, and struts150. In an embodiment, Struts 150 can be offset. In an embodiment,struts 150 can be positioned on different axes, for example, one strut150 can be positioned on axis 148 and the other strut 150 can bepositioned on axis 149.

FIG. 8 illustrates an example halo 134 attachment mechanism. Halo 134can include U-shaped flanges 139. U-shaped flanges 139 can attach tostruts 150 by quick release fixtures including handle 140 and quickrelease latch 141. In an embodiment, any other type of connection andrelease mechanism can be used. In another embodiment, halo 134 ispermanently attached to struts 150. FIGS. 9A, 9B, 9C and 9D illustratethe quick release fixture in different states of connectivity. FIG. 9Aillustrates handle 140 and quick release latch 141 engaged with struts150. FIG. 9B illustrates handle 140 released from struts 150. FIG. 9Cillustrates handle 140 released from struts 150 and latch 141 partiallyreleased from struts. FIG. 9D illustrates handle 140 and latch 141completely released from struts 150, enabling halo 134 to be removedfrom struts 150.

In an embodiment, halo 134 can be removed and replaced with a halo of adifferent shape or size to accommodate a user of a different shape orsize. In an embodiment, halo 134 can be of substantially torus shape, toenable minimum contact with sleds 125. In another embodiment, halo 134can further be shaped similar to a torus, where a minor circle of atorus can be an ellipse or any other shape to enable minimum contactwith sleds 125. In another embodiment, halo 134 can be interchanged witha myriad of halos with different circumferences in order to accommodateusers of all sizes. In another embodiment, struts 150 can further beenabled for removal in order to accompany different halo designs toaccommodate users of all sizes. In another embodiment, removable halo134 and removable struts 150 can aid in transporting an omnidirectionallocomotion system.

FIG. 10 illustrates an example strut system 190 for vertical movement ofhalo 134. Halo 134 can comprise one or more release members 191 and becoupled to one or more struts 150. One or more struts 150 can compriseone or more locking mechanism 195 and one or more positioning member 194coupled to the one or more release members 191 by one or more cables192. The positioning member 194 can comprise retractable locking pin193, the retractable locking pin 193 being engaged when the releasemember 191 is disengaged, disabling halo 134 from vertical movement; andthe retractable locking pin 193 being disengaged when the release member191 is engaged, enabling the halo 134 to move vertically. In anembodiment, struts 150 can be kept in place by a positioning pin orretractable locking pin 193 included in positioning member 194, whichcan lock the vertical location of the struts 150. Struts 150 can bemoved vertically up and down when the positioning pin is retracted. Auser can enable vertical movement by actuating release member 191. Byactuating release member 191, cable 192 is pulled upwards actuatinglocking mechanism 195, which in return retracts the pin in thepositioning mechanism 194 and unlocks struts 150 enabling verticalmovement.

FIG. 11 illustrates an example omnidirectional locomotion system 130with vertically adjustable struts 150. Foot levers 153 can be configuredto release strut latches 152 to enable adjustment or removal of strut150 from strut base 151. Foot levers 153 can be attached to strutlatches 152. In another embodiment, foot levers 153 can be separate fromstrut latches 152 as shown in FIG. 14 . Separate foot levers can utilizean internal spring released mechanism for releasing strut latches 152.Struts 150 can include printed height markings 154 for aiding in heightadjustments. Struts 150 can be completely removed from strut base 151with the use of an auto-lock mechanism shown in FIG. 18-20 . FIG. 12Aand FIG. 12B illustrate struts 150 at a high height and a low heightrespectively.

FIG. 13 is an internal view of an example strut base 151 and strut 150illustrating a strut connection mechanism. Circular portion 151asupports a spring (not shown) that can provide a counterforce to theinner portion of strut 150. The counterforce of the spring preventsstruts 150 from falling when unlatched by strut latch 152 from strutbase 151. FIG. 14 is an internal view of an example strut base 151illustrating an internal spring mechanism 151B. When foot lever 153 isdepressed and struts 150 are released, internal spring mechanism 151B isactuated providing an upward force to counteract the weight of struts150 and halo 134. Internal spring mechanism 151B can enable a user toeasily adjust the height of halo 134 without having to bear the entireweight of the struts 150 and halo 134.

FIG. 15 is a cross-sectional view of an example strut latch 152. Strutlatch 152 can be coupled to pins 155A, springs 155B and brackets 155C.Pins 155A can be threaded through brackets 155C and springs 155B can becircumferential to pins 155A and adjacent to each side of brackets 155C.When strut latch 152 is released there is minimal tension in springs155B enabling strut 150 to be vertically adjusted. When strut latch 152is engaged, tension is present in springs 155B disabling or lockingstrut 150 from being vertically adjusted. Secure pins 158 can beconnected to strut latch 152 by a mounting plate 160. Secure pins 158can be engaged when strut latch 152 is engaged (flush with strut base151) and disengaged when strut latch 152 is disengaged (away from strutbase 151). Secure pins 158 can align with strut holes (shown in FIG. 11) enabling securement of struts 150 in strut base 151. Secure pins 158can aid in engagement of struts 150 at level heights. Rubber pads 159can be connected to strut latch 152 by a mounting plate. Rubber pads 159can be engaged when strut latch 152 is engaged (flush with strut base151) and disengaged when strut latch 152 is disengaged (away from strutbase 151). Rubber pads 159 can create friction between the strut base151 and strut 150 enabling preventing movement of struts 150.

FIG. 16 is a cross-sectional view of an example strut 150 illustrating apeg adjustment mechanism. Strut base 151 can include one or more pegs156 enabled to interact with struts 150. Strut 150 can include one ormore peg holes 157 for coupling with one or more pegs 156. Pegs 156 andpeg holes 157 can provide a tactile feedback to a user while adjustingthe height of halo 134. For example, when a user is adjusting the heightof halo 134, by pulling or pushing on the handle 131, peg 156 and pegholes 157 can provide an audible clicking sound and a physical clickingvibration to notify the user that strut 150 is aligned correctly.

FIG. 17 illustrates an example removable panel 161 of an auto-lockmechanism of strut base 151. FIG. 18 , FIG. 19 and FIG. 20 illustrateinternal structures of an example strut base 151 illustrating anauto-lock mechanism in various stages of engagement. FIG. 18 illustratesstrut 150 before complete insertion into a strut base 151. Auto-lock pin164 can be coupled to spring mechanism 163 and handle 162. Engaging(pulling) handle 162 can compress spring mechanism 163 partial removingpin 164. Strut 150 can include slanted depressible button 165. Slanteddepressible button 165 can enable strut 150 to be inserted into strutbase 151 and prevent the removal of strut 150 without engagement ofauto-lock mechanism. FIG. 19 illustrates strut 150 inserted into strutbase and an enabled an auto-lock mechanism. During this stage ofengagement, strut 150 cannot be removed from strut base 151. FIG. 20illustrates engaging handle 162, compressing spring mechanism 163,partial removing pin 164 and enabling the removal of strut 150.

FIG. 21 illustrates an example omnidirectional locomotion system,specifically, a platform 170 and a lower platform 171. Lower platform171 can provide added stability to an omnidirectional locomotion system.As shown in FIG. 7 , an omnidirectional locomotion system can includetwo offset (not centered) struts 150. Lower platform 171 can provideadded stability by counter-weighting the offset of the struts. Lowerplatform 171 can include textured anti-slip rubber pad 174 to prevent auser from slipping/falling while wearing low friction footwear. Lowerplatform 171 can also include a disclaimer informing a user to removefootwear to prevent accidents while operating in or around anomnidirectional locomotion system. Platform 170 and lower platform 171can also include light-emitting diodes (LED) 177 to inform a user of thedifferent statuses of an omnidirectional locomotion system. For example,green can indicate fully operational, in operation or sensors connected,amber can indicate please wait or sensors not connected, red canindicate stop, system is not ready or sensors not connected. Variousblinking LED and combinations thereof can be configured for other statusnotifications. The omnidirectional locomotion system can also include anon/off button 175. Pressing the on/off button can power on or off a PCB,LED, and enable connections or can disconnect with one or more sensorsand computing system.

FIG. 22 illustrates an example internal structure of a platform 170 andlower platform 171 of an omnidirectional locomotion system. Platform 170enables stable use of an omnidirectional locomotion system comprisingtwo offset struts. Platform 170 can include an outer frame 172A and twocrossbars 340 for enabling stability. Platform 170 can further includesupport plates 341 in each corner of platform 170. In an embodiment,crossbars 340 and support plates 341 can be welded to platform 170.Crossbars 340 and support plates 341 can be comprised of metals,metal-alloys, for example, steel or any other material capable ofstabilizing the use of an omnidirectional locomotion system. Platform170 can be of a plurality of shapes, for example a hexagon, an octagon,a square or a circle. Lower platform 171 can include an outer frame 172Band an internal frame 173. The internal frame 173 can be made of a heavymaterial, for example steel, in order to counter-weight the user'sweight and the offset of the struts.

FIG. 23 illustrates an example cable/PCB panel of an omnidirectionallocomotion system. Panel 176 protects the cables and PCB from externalelements. Cut-outs 180a, 180b, and 180c can enable cables from the PCBto be run from either side of the panel and under the lower platform.Cut-outs 180a, 180b, and 180c can enable cable connections from eitherside of the omnidirectional locomotion system preventing possiblecabling issues. For example, preventing loose cables being run inwalking areas, trip hazards, accidental unplugs, or unsafe cablinglayouts. FIG. 24 illustrates an example internal cabling/PCB panel of anomnidirectional locomotion system. One or more cable plugs 178 can beincluded for inserting cables of computer system for connection withPCB, power cables, network cables, or any other type of connectioncables. Clips 179 can aid in cable management by preventing cables frommoving around behind panel 176. Alternatively, clips 179 could be cableplugs. In another embodiment, cable plugs 178 can each have anintegrated clip 179. Cable plugs 178 and clips 179 can include cablesthat run under lower platform 171 by cut-out 180c. In anotherembodiment, platform 170 and lower platform 171 can be integrated withcable runs to facilitate cables being hidden on opposite sides. The PCBcan be located behind cable plugs 178 and clips 179. The PCB can beremovable to upgrade or install new hardware.

FIG. 25 is a block diagram illustrating an example POD system 400. In anembodiment, POD system 400 can be connected to a user's body, anaccessory or an omnidirectional locomotion system (for example, legs,feet, arms, head, torso, gun, sword, paddle, racquet, halo, or harness)to enable data related to a user's movements to be transmitted to acomputing system (for example, an aggregator board). In an embodiment, asensor 401 can include an accelerometer 401A, a gyroscope 401B, and amagnetometer 401C. In one embodiment, sensor 401 can include one or moreinertial measurement units (IMU). One or more sensors 401 can digitizeanalog signals for a multi-axis compass, accelerometer and gyroscope.One or more sensors 401 can connect to a multi-controller unit (MCU)402. In an embodiment, the connection between sensor 401 and MCU 402 isby an I2C bus. In an embodiment, the connection between sensor 401 andMCU 402 is by an USB. MCU 402 can manipulate received data from one ormore IMU 401 into a multi-axis solution indicating direction, position,orientation and movement and then transmits the data to anothercomputing system by radio transmitter 404. In an embodiment, radio 404is a short-range wireless radio (for example Bluetooth). In anembodiment, radio 404 is a 2.4 GHz wireless radio. MCU 402 can also haveconnections to a power management 405 (by πL), EERPOM 406 (by I2C), aUART 403 for debugging (by TTL).

FIG. 26 and FIG. 27 are block diagrams of example POD systems 410 and430. POD 410 can include a multi-axis accelerometer/gyroscope 411, anmagneto-impedance (MI) sensor 412 for detecting multi-axis magneticfields, and an EEPROM memory 413 connected to a processor/wirelesstransceiver 414. In an embodiment the processor and wireless transceivercan be integrated. In another embodiment, the processor and wirelesstransceiver can be separated. Processor 414 can be connected to a radiointerface 415, a TTL interface 416 and one or more LEDs 417 forindications of transmissions, statuses, and errors. Processor 414 can beconnected to a power management chip 418. Power management chip 418 canbe connected to a USB interface 419, one or more battery interfaces 420and one or more LEDs 417 for indications of power management,transmissions, statuses, and errors. The various components of PODsystem 410 can be connected by I2C bus, RF, UART, GPO, USB power,battery power, PMIC, or GPI. For example, accelerometer/gyroscope 411can be connected to processor 414 by I2C, processor 414 can be connectedto radio interface 415 by RF, and power management chip 418 can beconnected to battery interface by GPI. POD system 430, shown in FIG. 27, can represent an alternative embodiment of POD system 410.

A POD can be pre-configured for use, for example, a first POD can bedesignated for use as a left foot, a second POD can be designated foruse with a right foot, a third POD can be designated for use with atorso, a fourth POD can be designated for use with a head, a fifth andsixth POD can be designated with a left and right arm/hand respectively,a seventh POD can be designated to be used with a head, and an eighthPOD can be designated with an accessory, such as a gun or sword.Furthermore, more IMUs can be designated or less IMUs can be designatedbased on specific needs of a user computing system. Alternatively, anPOD can be configured before use. For example, a computing system canask a user to move their left foot to configure an POD on their leftfoot. The computing system can ask a user to move their right foot toconfigure an POD on their right foot. The computing system can ask auser for each present POD.

FIG. 28 illustrates a block diagram of an example aggregator board 440.An aggregator board can be installed in a strut base behind thecabling/PCB board. An aggregator board can be integrated with orseparate from a PCB board. An aggregator board can be configured toreceive data from one or more sensors (for example, one or more POD) andcompile, processes and transmit the processed data. In an embodiment,the processed data can be transmitted to a computing device (forexample, a server, mobile device, gaming system) configured to run anAPI for translation of the processed data. The transmission can be by aUSB connection, short-range wireless, Bluetooth, or any othertransmission medium.

FIG. 29 illustrates an example layer model for a POD communicationsystem 450. Layer 1 455 can include one or more PODs 455A. In anembodiment, PODs 455A can be sensors. The PODs 445A can transmit outputvalues to Layer 2 460. In an embodiment, Layer 1 455 can wirelesslytransmit data to Layer 2 460, for example, by Bluetooth or a 2.4 GHzradio transmission.

Layer 2 460 can include a control box for receiving PODs 455A valueoutput. In an embodiment, the control box is an aggregator board. Layer2 460 can include an API 460A for translating received data from PODs455A. Layer 2 460 can include different libraries 460B, for example, afiltering library, a processing library and motion library enablingtranslating received data from API 460A. In an embodiment, API 460A cancall library functions to enable translation of the received POD data.Layer 2 460 can further include transmitting and receiving components460C, for example, USB, Bluetooth, short-range wireless, 2.4 GHz radio,Wi-Fi and/or Ethernet.

Layer 3 465 can include a computing system 465B, for example, a PC, atablet, a phone, a gaming system, or any other computing device. Thecomputing device can run a game or application 465B along with an API465A. The game or application 465B can be a computer game, a PlayStationgame, an XBOX game, or any other game or application. The API 465A canreceive data from Layer 2 460 and translate the received data to aformat the game or application 465B can understand. Once translated bythe API 465A, the movement of a user, tracked by PODs 455A in anomnidirectional locomotion system, can be translated into movements of agame or application. In another embodiment, the movement of a user,tracked by PODs 455A can be outside of an omnidirectional locomotionsystem.

FIG. 30 illustrates a circuit diagram of an example IMU layout 470including a processor, multi-axis accelerometer/gyroscope, amagnetometer, and a USB connector. A magnetometer can measure a headingwith respect to magnetic North. An accelerometer can measureacceleration and velocity in the X, Y, and Z planes. A gyroscope canmeasure an orientation of pitch, roll and yaw.

FIG. 31 illustrates a circuit diagram of an example of an aggregatorboard layout 480 including a processor, a Bluetooth receiver andtransmitting, POD radios, POD charging, a USB, and a power managementunit.

FIG. 32 is a block diagram of an example POD communication system 490. APOD communication system 490 can include a virtual reality headset 491connected to an aggregator board 493 by short-range wireless, forexample Bluetooth. A POD communication system can include a virtualreality headset 492 connected to an aggregator board 493 by USB or HDMIby a computer system 494. In another embodiment the virtual realityheadset 492 connects to the aggregator board without first connecting tocomputer system 494. A POD communication system 490 can further includeone or more PODs 495 connected to an aggregator board 493. In anembodiment, a connection between PODs 495 and aggregator board 493 iswireless, for example Bluetooth or 2.4 GHz radio. An aggregator board493 can receive data, compile data, and process data and transmit theprocessed data to a computing system. In other embodiments, aggregatorboard can be one or more MCU. In other embodiments, the PODcommunication system 490 can transmit and receive data using HDMI, USB,Bluetooth, short-ranged wireless, Wi-Fi, Gazell protocol, or any othercommunication medium.

FIG. 33 is a flow chart of an example method of a fully decoupledvelocity and heading. Method 510 illustrated in FIG. 33 is provided byway of example, as there are a variety of ways to carry out the method.Additionally, while the example method is illustrated with a particularorder of steps, those of ordinary skill in the art will appreciate thatFIG. 33 and the steps illustrated therein can be executed in any orderthat accomplishes the technical advantages of the present disclosure andcan include fewer or more steps than illustrated.

Each block shown in FIG. 33 represents one or more processes, methods,or subroutines, carried out in example method. The steps illustrated inFIG. 33 can at least be implemented in a system including anomnidirectional locomotion system 130, POD system 400, and/or PODcommunication system 490. Additional steps or fewer steps are possibleto complete the example method. Each block shown in FIG. 33 can becarried out by at least a system including an omnidirectional locomotionsystem 130, POD system 400, and/or POD communication system 490.Alternatively, in another embodiment, each block shown in FIG. 33 can becarried out without the use of an omnidirectional locomotion system 130.

Method 510 can begin at block 511. At block 511, a pedometry rate of auser is determined by acceleration data received at an aggregator boardfrom one or more PODs. In another embodiment, gyro data is received atan aggregator board. The pedometry rate can be the frequency of usersteps during a predefined interval. In an embodiment, the pedometry ratecan be determined by monitoring an acceleration of a user's feet duringa predefined interval. In another embodiment acceleration data isreceived at a PCB that is separate from an aggregator. In anotherembodiment, accelerated data is received at a computing device bypassingan aggregator or PCB to determine a pedometry rate. In anotherembodiment, a change in rotation can be determined in place of apedometry rate. When a pedometry rate is determined at block 511, themethod can move to block 512.

At block 512, the determined pedometry rate of a user is used tocalculate a velocity. A velocity is calculated by looking for peaks inacceleration followed by high frequency noise to indicate foot impact.Rate and magnitude of the relative energy in each foot step, as measuredby the duration and peak of the acceleration, is used to calculate therate of steps. In an embodiment, the velocity can be an averagevelocity. In another embodiment, the velocity can be a median velocity.In another embodiment, the velocity can be an angular velocity. When avelocity is calculated at block 512, the method can move to block 513.

At block 513, a heading is calculated for the one or more IMU. Acorrected orientation is translated into real physical world axes toprovide a heading of one or more PODs. In one embodiment, the one ormore POD orientations can be averaged to provide an aggregate combinedheading. In an embodiment, one or more PODs can be located on user'shead, torso, feet, legs, arms, an accessory, halo, or harness. When aheading is determined at block 513, a method can move to block 514.

At block 514, the heading and velocity can be translated into2-dimensional Cartesian coordinates (X, Y). The translated coordinatescan represent gamepad and/or joystick values. For example, the velocitycan be a magnitude or amplitude of the X and Y values and the headingcan be translated into degree angles from relative magnetic North of theEarth. When the heading and velocity are translated into coordinates atblock 514, the method can move to block 515.

At block 515, the coordinates are normalized into a minimum to maximumscale range, as defined by USB HID joystick/game pad descriptors. Byvirtue of control decoupled from camera view, additional movements suchas walking backward, left and right strafing can be enabled. When thecoordinates are normalized method 510 can end.

Method 510 can be used for a decoupled forward movement. A forwardmovement can be a relative movement in the Y direction relative to thecenter of one or more PODs, and generates a movement in the Ygamepad/joystick direction. An acceleration when a user foot is in theair can be measured in the direction of the heading of the foot. Aforward velocity measurement can be then translated into “real world”coordinates relative to magnetic North of the Earth. All other motionsnot in the forward Y-axis of a POD, relative to the POD body, can beignored to disallow spurious or false movements in alternate directionsconfining the motion identification process to forward motions.

Method 510 can be used for a decoupled backwards movement. A backwardsmovement can be a relative movement in the Y direction relative to thecenter of one or more PODs, and generates a movement in the Ygamepad/joystick direction. An acceleration when a user foot is in theair can be measured in the opposite direction of the heading of thefoot. A backwards velocity measurement can be then translated into “realworld” coordinates relative to magnetic North of the Earth. All othermotions not in the backwards Y-axis of an POD, relative to the POD body,are ignored to disallow spurious or false movements in alternatedirections confining the motion identification process to forwardmotions.

Method 510 can be used for a decoupled side movement or strafe movement.A side movement can be a relative movement in the X direction relativeto the center of one or more POD, and generates a movement in the Xgamepad/joystick direction. An acceleration when a user's foot is in theair can be measured in the perpendicular direction of the heading of thefoot. A side velocity measurement can be then translated into “realworld” coordinates relative to magnetic North of the Earth. All othermotions not in the X-axis of a POD, relative to the POD body, areignored to disallow spurious or false movements in alternate directionsconfining the motion identification process to forward motions.

FIG. 34 is a flow chart of an example method of a coupled forward,backward, and side-to-side movements. Method 520 illustrated in FIG. 34is provided by way of example, as there are a variety of ways to carryout the method. Additionally, while the example method is illustratedwith a particular order of steps, those of ordinary skill in the artwill appreciate that FIG. 34 and the steps illustrated therein can beexecuted in any order that accomplishes the technical advantages of thepresent disclosure and can include fewer or more steps than illustrated.

Each block shown in FIG. 34 represents one or more processes, methods,or subroutines, carried out in example method. The steps illustrated inFIG. 34 can at least be implemented in a system including anomnidirectional locomotion system 130, POD system 400, and/or a PODcommunication system 490. Additional steps or fewer steps are possibleto complete the example method. Each block shown in FIG. 34 can becarried out by at least a system including an omnidirectional locomotionsystem 130, POD system 400, and/or POD communication system 490.Alternatively, in another embodiment, each block shown in FIG. 34 can becarried out without the use of an omnidirectional locomotion system 130.

Method 520 can begin at block 521. At block 521, acceleration data isreceived at an aggregator from one or more PODs is used to determine apedometry rate of a user. In another embodiment acceleration data isreceived at a PCB that is separate from an aggregator. In anotherembodiment, accelerated data is received at a computing device bypassingan aggregator or PCB to determine a pedometry rate. When a pedometryrate is determined at block 521, the method can move to block 522.

At block 522, the determined pedometry rate of a user is used tocalculate a velocity. A velocity is calculated by looking for peaks inacceleration followed by high frequency noise to indicate foot impact.Rate and magnitude of the relative energy in each foot step, as measuredby the duration and peak of the acceleration, is used to calculate therate of steps. When a velocity is calculated at block 522, the methodcan move to block 523.

At block 523, a heading is calculated for the one or more PODs. Anorientation of the one or more PODs is translated into relative bodyaxes of the one or more PODs to determined an intended direction ofmotion. In one embodiment, the one or more PODs orientations can beaveraged to provide an aggregate combined heading. In an embodiment, oneor more PODs can be located on user's head, torso, feet, legs, arms, anaccessory, halo, or harness. In this embodiment, real world coordinatesare not calculated and are not used to provide heading. The one or morePODs relative self-orientations are then averaged to provide a heading.When a heading is calculated at block 523, a method can move to block524.

At block 524 the aggregated combined heading and velocity can betranslated into 2-dimensional Cartesian coordinates (X-axis and Y-axis).The translated coordinates can represent gamepad and joystick values.For example, the velocity can be a magnitude of the X and Y values andheading (orientation) is translated into degrees 90 degree angleincrements from the forward (relative to Y-axis of the PODS). When theheading and velocity are translated into coordinates at block 524, themethod can move to block 525.

At block 525 the coordinates are normalized into a minimum to maximumscale range, as defined by USB HID joystick/game pad descriptors. Whenthe coordinates are normalized method 520 can end.

Method 520 can be used for forward and backwards coupled movements.Forward and backwards can be relative movement in the Y directionrelative to the center of the PODs, and generates a movement in the Ygamepad/joystick direction. An acceleration when a user's foot is in theair can be measured in the direction of the camera position for forwardmovement and in the opposite direction of the camera position forbackwards movement. All other axes, relative to the PODs, can be ignoredto disallow spurious or false movements in alternate directions,therefore confining the motion identification process to forward andbackwards motions.

Method 520 can be used for side coupled movement or strafing coupledmovements. Side movements can be relative movement in the X directionrelative to the center of the PODs, and generates a movement in the Xgamepad/joystick direction. An acceleration when a user foot is in theair can be measured in the perpendicular direction of the cameraposition. All other axes, relative to the PODs, can be ignored todisallow spurious or false movements in alternate directions, thereforeconfining the motion identification process to side motions.

In determining movement of a user of an omnidirectional locomotionsystem, it is desirable to decrease the time for detecting walking hasbegun on the omnidirectional locomotion platform. A delay in detectioncan be perceived as lag between a user's movement on the platform and auser's avatar in a virtual environment. An additional layer for improvedstep detection performance for the initial step is specified in anembodiment where triggering off an acceleration above a minimum level(threshold) in the forward Y-direction (relative to the POD coordinates)generates a user movement in gamepad/joystick coordinates (relative toreal world North of the Earth). This trigger can be armed during timeswhen a motion library has not completed calculating acceleration andvelocity intensities. Relative strength of the acceleration energy canbe used to ease a transition from a “first step” trigger motion into afull motion library, for example, forwards walking, backwards walking,running, crouching, strafe, creep, jumping or any additional motiongestures detectable on the omnidirectional locomotion system. Thetrigger has a rate independent hysteresis to alleviate an appearance ofjitteriness in user motions caused by noise in measured accelerometerdata.

Decreasing a lag between the cessation of movement and its detection isspecified in an embodiment which triggering off an acceleration below amaximum level in all relative directions (relative to the PODcoordinates) forces user movement to stop. This trigger is armed duringtimes when the motion library has identified intended user motions. Thetrigger has a rate independent hysteresis as to alleviate the appearanceof jitteriness in user motions caused by noise in the measuredaccelerometer data.

FIG. 35 is a flow chart of an example method of detecting a quick stopof a user movement. Method 530 illustrated in FIG. 35 is provided by wayof example, as there are a variety of ways to carry out the method.Additionally, while the example method is illustrated with a particularorder of steps, those of ordinary skill in the art will appreciate thatFIG. 35 and the steps illustrated therein can be executed in any orderthat accomplishes the technical advantages of the present disclosure andcan include fewer or more steps than illustrated.

Each block shown in FIG. 35 represents one or more processes, methods,or subroutines, carried out in example method. The steps illustrated inFIG. 35 can at least be implemented in a system including anomnidirectional locomotion system 130, a POD system 400, and a PODcommunication system 490. Additional steps or fewer steps are possibleto complete the example method. Each block shown in FIG. 35 can becarried out by at least a system including an omnidirectional locomotionsystem 130, a POD system 400, and a POD communication system 490.Alternatively, in another embodiment, each block shown in FIG. 35 can becarried out without the use of an omnidirectional locomotion system 130.

Method 530 can begin at block 531. At block 531, the method can receive,from one or more PODs, raw gyro data. In an embodiment the raw gyro datacan be an angular velocity. The angular velocity can be used todetermine if a user is moving forward or backwards, for example walkingforwards/backwards or running forwards/backward by the change inrotation of a user's feet. In an embodiment if the angular velocity isnon-zero the user can be moving. In another embodiment, the angularvelocity can be determined by receiving the one or more POD data over apredefined interval. In another embodiment, the received data can beacceleration data for calculating a velocity. If at block 531 it isdetermined that the user is moving, the method can move to block 532.

At block 532, the method can normalize or smooth the raw data byapplying a filter. In an embodiment, the raw gyro data can be runthrough a fast stopping filter. In regard to the fast stopping filter,the received raw gyro data can be run through an exponential movingaverage (EMA) filter, then the smoothed (filtered) values can becompared to previous smoothed values, to determine a smooth deltaresulting in a smoothed gyro data graph. In another embodiment, the rawgyro data can be run through an analog speed filter. In regard to theangle speed filter the raw gyro x-axis values for both feet PODs can berun through an EMA filter to calculate the absolute value of each gyro.The filtered values can be added together, scaled, and then an offset isadded. In an embodiment the offset can be a scale offset, i.e., so thevalue falls within a valid joystick output value. The offset value canthen run through an EMA filter. The EMA filter can be a new EMA filteror the previously mentioned EMA filter. The result is a smooth outputthat is approximately equivalent to a velocity, for example a walkingvelocity. An example smoothed gyro data graph can be seen in FIG. 36 .When a filter has been applied the method can move to block 533.

At block 533, the method can determine if the smoothed gyro data atblock 532 drops within a predefined threshold. In an embodiment thesmoothed gyro data can be an angular velocity (rate of rotation persecond) in the direction of motion. For example, the angular velocitycan be determined from the gyro axis perpendicular to the direction ofthe motion. The predefined threshold can be used to determine when theuser is slowing down. In an embodiment, predefined threshold can be 0.33degrees per second. The angular velocity can be monitored at apredetermined interval, for example 1 ms, 5 ms, 10 ms, 15 ms, and 20 ms.As shown in FIG. 36 , when the angular velocity of POD 501 and POD 502drops within a predefined threshold 503 the movement of the user can beslowing down. In an embodiment, to prevent a false stop detection, thepredefined threshold can be determined dynamically based on the velocityof the user movement. For example, when the velocity is calculated at aslow speed (walking or creeping) the predefined threshold can be atighter window making the trigger points smaller. When the forwardvelocity is calculated at a high speed (running) the predefinedthreshold can be a larger window making the trigger points larger. Inanother embodiment to prevent a false stop a decay can be added when theangular velocity drops to the predefined threshold. The added decay canalleviate any stuttering effect. The decay is an exponential decaycalculated mathematically, to have a gradual transition towards zero.When the smoothed gyro data has dropped below the predefined threshold,the method can move to block 534.

At block 534, the method can determine when the slope of the smoothedgyro data has approached zero for a predefined interval. For example,during a predefined interval of 1 ms, 5 ms, 10 ms, 15 ms, or 20 ms. Whenthe slope of the angular velocity continues to approach zero, a stop canbe detected. In an embodiment, a stop can be detected when the slope isless than 0.01 degrees per second squared. Alternatively, if during thissame interval the slope does not continue to approach zero, a stopcannot be detected. In an embodiment, the slope deltas (during thepredefined interval) can be analyzed to locate a peak. The velocity canbe set to the maximum of each peak until the next peak is located, whichthen can be set to the velocity. In another embodiment, when the angularvelocity slope is within a minimum predefined window, a counter isincremented. If the counter reaches seven, the velocity is set to zero.When the predefined interval has ended the method can move to block 535if the slope approached zero for the predefined interval or can returnto block 531 if the slope did not approached zero for the predefinedinterval.

At block 535, the method can detect a quick stop. For example, when thesmooth gyro data is within the threshold and when the slope of thesmooth gyro data approached zero during the predefined interval a quickstop is detected. When a quick stop is detected, method 530 can end.

FIG. 37 illustrates a platform sensor layout 600. Platform 170 can beequipped with one or more sensors 615 for tracking the movement of oneor more feet. In an embodiment, sensors 615 can be proximity sensors,for example capacitive sensors using the body capacitance of each of theuser's feet as input. The capacitive sensors can be activated when oneor more feet are moved over the sensor. In another embodiment, sensors615 can be magnetic sensors, optical sensors, spiral sensors, IMUsensors, PODs, or any sensors capable of high accuracy readings.Platform 170 can include a harness (not shown) and halo (not shown) forsupporting a user as shown in FIG. 3 and FIG. 4 . The harness caninclude one or more sensors for determining an orientation of a user,for example a user's torso orientation. The halo can include one or moresensors for determining an orientation of a user, for example a user'storso orientation. In another embodiment, a user's footwear can compriseone or more sensors, for example to differentiate between a left andright foot, the front of a foot and the back of a foot, or a toe and aheel.

Platform 170 can be divided into two or more concentric circles. Forexample, as shown in FIG. 37 , platform 170 can be divided into fourconcentric circles 609, 610, 611 and 612. Sensors 615 can be distributedon platform 170 in concentric circles 609, 610, 611 and 612. In anotherembodiments platform 170 can be divided into two or more regularpolygons. In another embodiment, platform 170 can be divided into acenter area and adjoining trapezoidal areas. In still anotherembodiment, platform 170 can be divided into a square symmetric XY grid.Platform 170 can further be divided into two or more slices. Forexample, as shown in FIG. 37 , platform 170 can be divided into 8slices, 601, 602, 603, 604, 605, 606, 607, and 608. One or more sensors615 can be located within the cross-section of each concentric circleand each slice. For example, sensor 615A can be located within thecross-section of the inner most concentric circle 609 and slice 601.Sensors 615B can be located within the cross-section of concentriccircle 611 and slice 601. In another embodiment, the cross-section ofthe inner most concentric circle 609 and slice 601 can include two ormore sensors. In another embodiment, each cross-section of a concentriccircle and slice can include two or more sensors.

Sensors 615 can be of equivalent size or of differing size. For example,sensors 615 can be of a smaller size when located near the center ofplatform 170 and progressively larger the further from the center ofplatform 170 the sensors 615 are located. In another embodiment, thesensors can be of equivalent size, for example, 1.5, 2.5, 3.5, 4.5 or5.5 inches or any other size in diameter.

FIG. 38 illustrates an example of two slices in communication of anomnidirectional locomotion system. Sensors 615 can be connected to oneor more printed circuit board (PCB) 620. For example, sensors 615located in each platform slice can be electronically coupled to a PCB620 located in their respective slice. In another embodiment, sensorsfrom all slices can be connected to a centralized PCB. Sensors 615 canbe electronically coupled by coaxial cable to PCB 620. In anotherembodiment, sensors 615 can be electronically coupled to PCB 620 byshort-range wireless communication, for example Bluetooth. The PCB ineach slice can be electronically coupled by a digital communication linkto the PCB in adjacent slices, for example, in a daisy chain or ringconfiguration. PCB 620 located in slice 601 can electronically coupledto PCB 620 located in slice 602, which can be electronically coupled toPCB 620 located in slice 603. In an embodiment, slice 601, can includeda micro-controller unit (MCU) with Universal Serial Bus (USB)capabilities 625. In another embodiment, slice 601, can include acentral processing unit with USB capabilities. MCU 625 can supply powerto PCB 620 in slice 601 and PCB 620 in slice 602 by connection 621. PCB620 in slice 602 can supply power to PCB 620 in slice 603 by connection624, which can supply the PCB in the adjacent slice in the daisy chainconfiguration until the last PCB is supplied with power. MCU 625 canalso supply a serial bus to PCB 620 in slice 602 by connection 622, forexample an inter-integrated circuit (I2C) bus, an universal asynchronousreceiver/transmitter (UART), a serial peripheral interface bus (SPI), alocal interconnect network bus (LIN), a controller area network bus(CAN), or any other type of serial bus. In another embodiment, serialbus communication can be achieved through local wireless communicationdevices located on each slice, either integrated or independent the MCU.PCB 620 in slice 602 can supply the serial bus to PCB 620 in slice 603by connection 623, which can supply the PCB in the adjacent slice in thedaisy chain configuration until the last PCB is supplied. In anotherembodiment, PCB 620 in slices 601-608 can be electronically coupled to acentralized PCB, for example in a star configuration. In anotherembodiment, the electronic coupling can be short-range wirelesscommunication. MCU 625 can transfer to and receive data from a computersystem 635. For example, a server, a gaming system, mobile device, or anequivalent computer system. In another embodiment, MCU 625 can monitorsensor activity by continuously polling PCB 620 in slices 601-608 by theelectronically coupled or wirelessly coupled bus. In another embodiment,PCB 620 in slices 601-608 can alert MCU 625 of sensor activity by meansof a hardware interrupt, for example, an electronic alerting signal toindicate an event needing immediate attention. Slice 601 can alsoinclude a Debug Kit 630 in connection with computer system 635.

Slice 602 can contain one or more sensors 615 and PCB 620. Slices603-608 can be substantially similar to slice 602. Slice 602 can beconnected in a daisy chain with slices 601 and 603. Slice 602 canreceive power and serial bus from slice 601. Slice 602 can transmitpower and serial bus to slice 603. This process can be repeated untilslice 608 receives power and serial bus from slice 607. This process canbe repeated for more or less slices depending on the number of slices inplatform 170. Slices 602-608 can contain a redundant MCU 625 and Programand Debug Kit 630.

FIG. 39 and FIG. 40 are flow charts illustrating an example method 700and method 750 for sensing a user's forward movement. A user's forwardmovement can be variable. Method 700 and method 750 are provided by wayof example, as there are a variety of ways to carry out the method.Additionally, while the example methods is illustrated with a particularorder of steps, those of ordinary skill in the art will appreciate thatFIG. 39 and FIG. 40 and the steps illustrated therein can be executed inany order that accomplishes the technical advantages of the presentdisclosure and can include fewer or more steps than illustrated.

Each block shown in FIG. 39 and FIG. 40 represent one or more processes,methods or subroutines, carried out in example method. The stepsillustrated in FIG. 39 and FIG. 40 can be implemented in at least asystem including platform 170. Each block shown in FIG. 39 and FIG. 40can be carried out at least by platform 170. The rings described inFIGS. 39 and 40 are an example representation of three concentriccircles for a sensor layout in platform 170. There can be more or lessrings depending on the designated sensor layout and therefore method 700and method 750 can contain more or less branches keeping consistent withthe number of rings in platform 170. In another embodiment, the sensorscan be located on a user or an accessory.

Method 700 can begin at block 701. At block 701, one or more sensors canchange from off to on and on to off, when the sensor has a value above athreshold. In an embodiment, the value can be a capacitance or opticalvalue. The threshold can also function as a by-pass filter for sensorcapacitances. Each sensor can have an independent threshold value. Thethreshold value can be adjustable. Threshold values can be adjustedbased on a number of variables, for example, the position of sensors ina platform 170, the number of sensors in a platform 170, the size of thesensors in a platform 170, and the size of the activating componentactivating and deactivating the sensors, for example a user's feet. Inan embodiment, the threshold value can determine if a sensor is on oroff, providing a direction vector of approximately 22 degrees. Inanother embodiment, the threshold value as a by-pass filter, whereinonly capacitances above the threshold are used in calculating thedirection vector and speed vector of approximately 2 to 3 degrees.

At block 702, sensor values or data can be saved. The sensor values canbe point-in-time scan values of all sensor data. Sensor data caninclude, but is not limited to capacitance value, operational state (onor off), historical time values, such as time stamp of last ON event,time stamp of last OFF event. The saved sensor values can be used bycomputer system 635 to calculate movements by each of the user's feet.The saved sensor values can further be used to historically calculatethe user's previous movements to aid in determining the user's actions,for example running, walking, walking backwards, jumping, forwardjumping, strafing, and crouching.

At blocks 711 to 712, one or more sensors located in an outer ring canbe change from off to on or from on to off. A sensor in an outer ringcan be activated to the “on” position by reading a sensor value greaterthan or equal to the threshold value, for example, one or both of auser's feet moving over a sensor located in an outer ring. A sensor inan outer ring can be deactivated to the “off” position by reading asensor value less than the threshold value, for example, one or both ofa user's feet moving away from a sensor located in an outer ring. Atblock 713, method 700 can generate “W” or forward in-game movement andmethod 700 can end.

At blocks 721 to 722, one or more sensors in a middle ring can changefrom on to off or from on to off. A sensor in a middle ring can beactivated to the “on” position by a reading a sensor value greater thanor equal to the threshold value, for example, one or more of a user'sfeet moving over a sensor located in a middle ring. A sensor in a middlering can be deactivated to the “off” position by reading a sensor valueless than the threshold value, for example, one or both of a user's feetmoving away from a sensor located in a middle ring.

At block 723, the computer system can check the point-in-time sensorscan of all sensors located in one or more adjacent inner rings ofplatform 170. At block 724, if one or more sensors are activated, “on,”in one or more adjacent inner rings of the same section as the sensor inthe middle ring, method 700 can generate “W” or a forward in-gamemovement and method 700 can end.

At blocks 731 to 732, one or more sensors in an inner ring can changefrom off to on or from on to off. A sensor in an inner ring can beactivated to the “on” position by reading a sensor value greater than orequal to the threshold value, for example, one or more of a user's feetmoving over a sensor located in an inner ring. A sensor in an inner ringcan be deactivated to the “off” position by reading a sensor value lessthan the threshold value, for example, one or both of a user's feetmoving away from a sensor located in an inner ring.

At blocks 733, the computer system can check the point-in-time sensorscan of all sensors located in one or more adjacent middle rings ofplatform 170. At block 734, if one or more sensors is activated “on” inone or more adjacent middle rings of a same section as the sensor in theinner ring, method 700 can generate “W” or a forward in-game movementand method 700 can end and method 700 can end.

Method 750 can begin at block 751. At block 751, one or more sensors canchange from off to on when the sensor has a value greater than athreshold. In an embodiment, the value can be a capacitance or opticalvalue. Each sensor has an independent threshold value. The thresholdvalue is adjustable. Threshold values can be adjusted based on a numberof variables, for example, the position of sensors in a platform 170,the number of sensors in a platform 170, the size of the sensors in aplatform 170, and the size of the activating component activating anddeactivating the sensors, for example a user's feet. In an embodiment,the threshold value can determine if a sensor is on or off, providing adirection vector of approximately 22 degrees. In another embodiment, thethreshold value as a by-pass filter, wherein only capacitances above thethreshold are used in calculating the direction vector and speed vectorof approximately 2 to 3 degrees.

At block 761, one or more sensors in an outer ring can change from offto on. A sensor in an outer ring can be activated to the “on” positionby reading a sensor value greater than or equal to the threshold value,for example, one or both of a user's feet moving over a sensor locatedin an outer ring. At block 762, method 750 can generate “W” or forwardin-game movement and method 700 can end.

At blocks 771, one or more sensors in a middle ring can change from offto on. A sensor in a middle ring can be activated to the “on” positionby reading a sensor value greater than or equal to the threshold value,for example, one or more of a user's feet moving over a sensor locatedin a middle ring. At block 772, method 750 can save sensor data. Thesensor values can be point-in-time scan values of one or more sensordata. Sensor data can include, but is not limited to capacitance value,operational state (on or off), historical time values, such as timestamp of last ON event, time stamp of last OFF event. The saved sensorvalues can be used by computer system 735 to calculate movements by eachof the user's feet. The saved sensor values can further be used tocalculate, historically, the user's previous movements to aid indetermining the user's actions, for example running, walking, walkingbackwards, jumping, forward jumping, strafing, and crouching.

At blocks 781, one or more sensors in an inner ring can change from offto on. A sensor in an inner ring can be activated to the “on” positionby reading a sensor value greater than or equal to the threshold value,for example, one or more of a user's feet moving over a sensor locatedin an inner ring. At blocks 782, the computer system can check thepoint-in-time sensor scan of all sensors located in one or more adjacentmiddle rings of platform 170. At block 783, if one or more sensors isactivated “on” in one or more adjacent middle rings of a same section asthe sensor in the inner ring, method 750 can generate “W” or forwardin-game movement and method 750 can end.

FIG. 41 and FIG. 42 are flow diagrams illustrating an example method 800and method 850 for generating a velocity vector for representing adirection and speed of a user step. Method 800 and method 850illustrated in FIG. 41 and FIG. 42 are provided by way of example, asthere are a variety of ways to carry out the method. Additionally, whilethe example methods is illustrated with a particular order of steps,those of ordinary skill in the art will appreciate that FIG. 41 and FIG.42 and the steps illustrated therein can be executed in any order thataccomplishes the technical advantages of the present disclosure and caninclude fewer or more steps than illustrated.

Each block shown in FIG. 41 and FIG. 42 represents one or moreprocesses, methods or subroutines, carried out in example method. Thesteps illustrated in FIG. 41 and FIG. 42 can be implemented in at leasta system including a platform 170. Each block shown in FIG. 41 and FIG.42 can be carried out at least by a platform 170. The rings described inFIGS. 41 and 42 are an example representation of three concentriccircles for a sensor layout in platform 170. There can be more or lessrings depending on the designated sensor layout and therefore method 800and method 850 can contain more or less branches keeping consistent withthe number of rings in platform 170. In another embodiment, the sensorscan be located on a user or an accessory.

Method 800 can begin at block 802. At block 802, one or more sensorschanges can be detected, for example, a sensor can change from off to onand on to off, when the sensor has a value above a threshold value. Inan embodiment, the value can be a capacitance or optical value. Thethreshold value can also function as a by-pass filter for sensorcapacitances. Each sensor can have an independent threshold value. Thethreshold value can be adjustable. Threshold values can be adjustedbased on a number of variables, for example, the position of sensors ina platform 170, the number of sensors in a platform 170, the size of thesensors in a platform 170, and the size of the activating componentactivating and deactivating the sensors, for example a user's feet. Inan embodiment, sensors 615 can include one or more capacitive sensorsthat register a default capacitance. In another embodiment, registeredcapacitive changes that occur in excess of the threshold can indicatethat the respective sensor has changed state, for example from an “off”to an “on” state, indicating engagement in an associated position on thelocomotion system platform 170 and providing a direction vector ofapproximately 22 degrees. In another embodiment, the threshold value asa by-pass filter, wherein only capacitances above the threshold are usedin calculating the direction vector and speed vector of approximately 2to 3 degrees.

In block 804, a save sensor scan operation is performed in which timedata is saved for one or more or all sensor scan data. The sensor valuescan be point-in-time scan values of one or more sensor data. Sensor datacan include, but is not limited to capacitance value, operational state(on or off), historical time values, such as time stamp of last ONevent, time stamp of last OFF event. The saved sensor values can be usedby computer system 635 to calculate movements by each of the user'sfeet. The saved sensor values can further be used to historicallycalculate the user's previous movements to aid in determining the user'sactions, for example running, walking, walking backwards, jumping,forward jumping, strafing, and crouching. The time data associated withindications of sensor state changes can be used to calculate velocityvectors from sensor data.

At blocks 806 to 808, one or more sensors located in an outer ring canbe changed from off to on or from on to off. A sensor in an outer ringcan be activated to the “on” position by reading a sensor value greaterthan or equal to the threshold value or by a step direction vectormethod, for example, one or both of a user's feet moving over a sensorlocated in an outer ring. A sensor in an outer ring can be deactivatedto the “off” position by reading a sensor value less than the thresholdvalue or by a step direction vector method, for example, one or both ofa user's feet moving away from a sensor located in an outer ring. Atblock 810, method 800 can generate a velocity vector of an outer ringsensor and method 800 can end.

At blocks 812 to 814, one or more sensors located in a middle ring canbe changed from off to on or from off to on. A sensor in a middle ringcan be activated to the “on” position by reading a sensor value greaterthan or equal to the threshold value or by a step direction vectormethod, for example, one or both of a user's feet moving over a sensorlocated in a middle ring. A sensor in a middle ring can be deactivatedto the “off” position by reading a sensor value less than the thresholdvalue or by a step direction vector method, for example, one or both ofa user's feet moving away from a sensor located in a middle ring.

At block 816, the computer system can check the point-in-time sensorscan 804 of all sensors located in one or more adjacent inner rings ofplatform 170. At block 818, if one or more sensors are activated, “on,”in one or more adjacent inner rings of the same section as the one ormore sensors in the middle ring, method 800 can generate a velocityvector of the one or more activated middle ring sensors and method 800can end.

At block 820 to 822, one or more sensors in an inner ring can changefrom off to on or from on to off. A sensor in an inner ring can beactivated to the “on” position by reading a sensor value greater than orequal to the value or by a step direction vector method, for example,one or more of a user's feet moving over a sensor located in an innerring. A sensor in an inner ring can be deactivated to the “off” positionby reading a sensor value less than the threshold value or by a stepdirection vector method, for example, one or both of a user's feetmoving away from a sensor located in an inner ring.

At block 824, the computer system can check the point-in-time sensorscan of all sensors located in one or more adjacent middle rings ofplatform 170. At block 826, if one or more sensors are activated “on” inone or more adjacent middle rings of a same section as the sensor in theinner ring, method 800 can generate a velocity vector of the one or moreactivated middle ring sensors and method 800 can end.

Method 850 can begin at block 852. At block 852, one or more sensors canchange from off to on when a sensor reads a value greater than athreshold value. Each sensor can have an independent threshold value.The threshold value can be adjustable. Threshold values can be adjustedbased on a number of variables, for example, the position of sensors ina platform 170, the number of sensors in a platform 170, the size of thesensors in a platform 170, and the size of the activating componentactivating and deactivating the sensors, for example a user's feet. Inan embodiment, sensors 615 can include one or more capacitive sensorsthat register a default capacitance. In another embodiment, registeredcapacitive changes that occur in excess of the threshold can indicatethat the respective sensor has changed state, for example from an “off”to an “on” state, indicating engagement in an associated position on thelocomotion system platform 170 and providing a direction vector ofapproximately 22 degrees. In another embodiment, the threshold value asa by-pass filter, wherein only capacitances above the threshold are usedin calculating the direction vector and speed vector of approximately 2to 3 degrees.

At block 854, one or more sensors in an outer ring can change from offto on. A sensor in an outer ring can be activated to the “on” positionby a reading over the threshold value or by a step direction vector, forexample, one or both of a user's feet moving over a sensor located in anouter ring. In another embodiment, one or more outer ring sensors areactivated only following an activation of one or more adjacent middlering sensors in the same section. At block 856, method 850 can generatea velocity vector of one or more outer ring sensors and method 850 canend.

At block 858, one or more sensors in a middle ring can change from offto on. A sensor in a middle ring can be activated to the “on” positionby reading a sensor value greater than or equal to the threshold valueor by a step direction vector, for example, one or more of a user's feetmoving over a sensor located in a middle ring. At block 860, method 850can save sensor data and then method 850 can end. The sensor values canbe point-in-time scan values of one or more sensor data. Sensor data caninclude, but is not limited to capacitance value, operational state (onor off), historical time values, such as time stamp of last ON event,time stamp of last OFF event. The saved sensor values can be used bycomputer system 635 to calculate movements by each of the user's feet.The saved sensor values can further be used to historically calculatethe user's previous movements to aid in determining the user's actions,for example running, walking, walking backwards, jumping, forwardjumping, strafing, and crouching.

At block 862, one or more sensors in an inner ring can change from offto on. A sensor in an inner ring can be activated to the “on” positionby reading a sensor value greater than or equal to the threshold valueor by a step direction vector, for example, one or more of a user's feetmoving over a sensor located in an inner ring. At blocks 864, thecomputer system can check the point-in-time sensor scan of one or moreof the sensors located in one or more adjacent middle rings in the samesection of platform 170. At block 866, if the time difference betweenthe current time of activation of the inner ring sensor and the time ofthe last “OFF” time stamp of the one or more adjacent middle ringsensors is less than a variable time stamp threshold, for example 1millisecond, method 850 can generate a velocity vector of one or moremiddle ring sensors at block 868 and method 850 can end.

The velocity vector generated in FIGS. 41 and 42 can be used tocalculate a variety of gaming metrics, for example, speed, direction,walking, running, jumping. The velocity vector output can be (X,Y)coordinates indicating direction and magnitude (speed) of the user'sfoot or feet.

Velocity vectors can be generated using (X,Y) position coordinates ofone or more sensors in which a change is registered, as shown in FIGS.41 and 42 For example, XY sensor plane of the locomotion system platform170, can stretch from a designated −1 to 1 distance units in eachquadrant of a two dimensional plane. The coordinates can be normalizedto facilitate ease of future vector calculations. For example, bydividing the both the X and Y coordinates by normalization factor, in anembodiment (X²+Y₂)^(1/2). Before velocity vectors are transmitted tocomputer system 635, MCU 625 can translate the coordinates from a(−1, 1) range to a (0, 255) range.

A vector speed representation can be calculated by multiplyingnormalized coordinates by a speed value, for example, a value between 0and 1. The resulting vector “length” can represent the speed. In anotherembodiment, vector speed calculations can be performed based on afrequency of user steps. In another embodiment, a time interval betweenactivation of consecutive or adjacent sensors can be used to determinethe vector speed. For example, using the saved sensor time stamp data.

In an embodiment, a velocity vector calculation can be used to calculatea user jump. For example, using the inner ring sensors and time stampdata of the center sensors to calculate activation and deactivation ofthe each foot. In another embodiment, the inner, middle and outersensors can be used to calculate a forward, sideways, and backwardsjump.

FIG. 43 illustrates a flow chart of an example method 900 for performingvelocity vector integration, with a third party system, for example, athird party gaming system. FIG. 43 is a flow diagram illustrating anexample method 900 for velocity vector integration with a third party.Method 900 illustrated in FIG. 43 is provided by way of example, asthere are a variety of ways to carry out the method. Additionally, whilethe example methods is illustrated with a particular order of steps,those of ordinary skill in the art will appreciate that FIG. 43 and thesteps illustrated therein can be executed in any order that accomplishesthe technical advantages of the present disclosure and can include feweror more steps than illustrated.

Each block shown in FIG. 43 represents one or more processes, methods orsubroutines, carried out in example method. The steps illustrated inFIG. 43 can be implemented in a system including at least platform 170.Each block shown in FIG. 43 can be carried out by at least a platform170. In another embodiment, the sensors can be located on a user or anaccessory.

Method 900 begins at block 902. At block 902 a relative velocity vectorinput can be received. Subsequently, an angle of the vector input iscomputed. The angle computed can be the angle measure between thevelocity vector direction and absolute north, the front of platform 170.At block 904, if the angle of the velocity vector input is 0, then aprevious vector quantity 905 is used. In an embodiment, if afterreceiving 0 vectors for 1/10^(th) second, the vector is reset to 0. Atblock 906, if the angle of the velocity vector input is less than 30degrees, the forward motion direction at block 907 is used. At block908, if the angle of the velocity vector input is between 30 and 80degrees, a 45 degree motion selection at block 909 is made, for example,in either the left or right direction. At block 910, if the angle ofvelocity vector input is between 80 and 90 degrees, a 90 degree motionat block 911 selection is made, for example, in either the left or rightdirection. At block 912, if the angle of the velocity vector input isgreater than 90 degrees, a backstep motion at block 913 is made vectoris reset to 0.

Current video games use a relative orientation framework. Pushing ajoystick to the right or pressing “D” on a keyboard can move a user'savatar 90 degrees to the right from a current viewpoint or cameraposition. In one embodiment, the current camera position can be obtainedby measuring a direction of a head mounted display (e.g., a virtualreality headset). Thus in the relative orientation framework, movementcan be relative to the current camera position. To further illustrate,pushing the joystick up or “W” on the keyboard can move the user'savatar in the forward in the current camera position.

In an example embodiment, a game can use an absolute orientationframework (decoupled framework). When a game is played using platform170, the user's avatar can move independently from the current viewpointor camera position. The user's avatar can move in an absolute mannerrelative to an in-game map. For example, if the user walks the directionnorth on platform 170, the user's avatar can move north on the in-gamemap, regardless of the current camera position. In a related aspect, thehead mounted display can include a magnetometer. The magnetometer canuse an absolute orientation framework similar to platform 170, whereinthe current in-game camera position can be the direction the user isphysically looking outside the game.

In an embodiment, the direction “north” can be magnetic north or polarnorth. In another embodiment, the direction “north” can be a designateddirection set or calibrated at a start of a game. For example, a userwearing a head mounted display, such as a virtual reality headset, canlook forward relative to the user's body during calibration, which cancalibrate the current forward looking direction with a forward walkingorientation prior to decoupling the current camera position and theuser's body position. In another embodiment, the halo or harnessattached to platform 170, can include sensors to calibrate the forwardposition of a user with the forward orientation in-game prior todecoupling the current camera position and the user's body position. Inanother embodiment, upon initiation of a game the current position ofthe user outside of the game, determined by the sensors in platform 170,the harness, or the headset can be calibrated to the starting positionof the game. For example, if an avatar is initiated facing east, thenthe direction the user is facing when the game is initiated can becalibrated east.

In an example embodiment, decoupling can be implemented in existinggames. Existing games are not set up for decoupling, however thedecoupling effect can still be achieved by generating one or morekeystrokes based on the user's current camera position. For example, ifthe user walks forward on the platform 170 while looking 90 degrees tothe left, decoupling can be accomplished by generating the “D” key orleft movement key. The absolute orientation framework can be convertedto the relative orientation framework by taking into account the currentcamera direction. In another example, if the user walks forward on theplatform 170 while looking 45 degrees to the right, achieving thedecoupling effect can be accomplished by generating the “W” and “A” keyssimultaneously or in an alternating manner. In yet another example, ifthe user walks forward on the platform 170 while looking 15 degrees tothe right, achieving the decoupling effect can be accomplished bygenerating the more “W” keys than “A” keys.

In an embodiment, the sensors can monitor directions of a user's leftfoot and right foot to determine the user's intended movement direction.FIG. 44 illustrates an example algorithm for determining a stepdirection. In an embodiment, four active sensors can be physicallylocated on one or more slices of platform 170, for example, the sensorsare located in slice 601 and rings 611 and 612. The four active sensorscan represent all non-zero sensors in the outer two sensor rings. Eachof the four active sensors can have a position vector value and acapacitance value. A threshold can be used to filter out sensorcapacitance readings below pre-defined threshold value. This can reducethe noise in determining a single step is completed. For example, if thethreshold value is specified as a capacitance value of 0.50, then onlysensors having a reading of greater than 0.50 can be used is determiningthe step direction. In another embodiment, the active sensors can bephysically located on a user's feet, hands, torso, head, or anaccessory, for example a gun, sword, baton, paddle, or bat.

FIG. 44 illustrates a flow chart of an example method 1000 fordetermining a user's intended movement direction. FIG. 44 is a flowdiagram illustrating an example method 1000 for determining a user'sintended movement direction. Method 1000 illustrated in FIG. 44 isprovided by way of example, as there are a variety of ways to carry outthe method. Additionally, while the example methods is illustrated witha particular order of steps, those of ordinary skill in the art willappreciate that FIG. 44 and the steps illustrated therein can beexecuted in any order that accomplishes the technical advantages of thepresent disclosure and can include fewer or more steps than illustrated.

Each block shown in FIG. 44 represents one or more processes, methods orsubroutines, carried out in example method. The steps illustrated inFIG. 44 can be implemented in at least a system including a platform170. Each block shown in FIG. 44 can be carried out by at least aplatform 170. In another embodiment, the sensors can be located on theuser or accessory.

Method 1000 can begin at block 1001. At block 1001, one or more sensorscan be activated by recording a measurement. In an embodiment, sensorson platform 170 can be activated by recording a capacitance measurement.For example, if a user steps forward to the outer two rings of slice601, the four sensors in rings 611 and 612 can have capacitancereadings. If the capacitance readings of the sensors are greater than apredefined threshold, the capacitance readings can be used to calculatethe step direction. In an embodiment all sensor readings greater thanzero can be used in calculating the step direction. In anotherembodiment, sensors can be activated by recording an inertialmeasurement or optical measurement. When a sensor value has beenrecorded at one or more sensors, the method can proceed to block 1002.

At block 1002, the active sensors with a recorded value greater than orequal to threshold can be normalized. During the normalization process,the position of one or more sensors can be converted to one or moredirection vectors. For example, if the active sensors are in slice 601,the normalized direction vectors can be in the direction of slice 601.When the normalization of the sensor positions has completed, the methodcan proceed to block 1003.

At block 1003, weighted vectors can be calculated for the normalizedposition vectors. In an embodiment, the weighted vectors by capacitancecan be calculated. For example, sensors with a greater capacitancereading can be assigned a higher weight. In an embodiment the weight ofeach active sensor is calculated by multiplying the normalized positionvectors by the sensor capacitance values. When the vectors have beenweighted the method can move to block 1003.

At block 1004, the weighted vectors can be accumulated to calculate anaccumulated vector. For example, the directionally weighted vectors canbe added together to calculate an accumulated vector. When anaccumulated vector has been calculated the method can move to block1005.

At block 1005, the accumulated vector can be normalized. For example,normalizing the accumulated vector can determine the step directionvector. When the accumulated vectors have been normalized and the stepdirection vector created method 1000 can end.

FIG. 45 is a flow diagram illustrating an example method 1050 fordetermining a user's intended movement direction. In another embodimentthe method can track two-step direction vectors and calculate thevelocity direction as the average of the two vectors. The method candetermine a velocity for a user's character movement based on even andodd step direction vectors and step time stamps, for example, averagingdirection vectors and monitoring step rate. The method can store a setof internal or global data structures, for example: Vector3, Float, Int,Bool, vStep[2], timeStep[2], nSteps, and is Step.

Method 1050 illustrated in FIG. 45 is provided by way of example, asthere are a variety of ways to carry out the method. Additionally, whilethe example methods is illustrated with a particular order of steps,those of ordinary skill in the art will appreciate that FIG. 45 and thesteps illustrated therein can be executed in any order that accomplishesthe technical advantages of the present disclosure and can include feweror more steps than illustrated.

Each block shown in FIG. 45 represents one or more processes, methods orsubroutines, carried out in example method. The steps illustrated inFIG. 45 can be implemented in at least a system including a platform170. Each block shown in FIG. 45 can be carried out by at least aplatform 170. In another embodiment, the sensors can be located on theuser or accessory.

Method 1050 can begin at block 1052. At block 1052 an event can occur,for example, a current time, position an inertial, optical orcapacitance measurement of one or more sensors. When an event hasoccurred, the method can proceed to block 1054. At block 1054, thesensors can be zeroed. In an embodiment, the sensors in a center zone ofplatform 170 can be zeroed. In an embodiment, the center zone can be theinner two rings of platform 170. In another embodiment center zone can ageometric shape, a circle, hexagon or octagon. When the sensors havebeen set to zero, method 1050 can proceed to block 1056.

At block 1056, a threshold can be used to filter active sensors. In anembodiment, a threshold can be used to filter active sensors based oncapacitance, optical measurements, or inertial measurements. Forexample, if the capacitance readings of the active sensors are greaterthan a predefined threshold, the active sensor can be included in thevelocity calculation. In an embodiment the threshold can be set to zero.When the active sensors with a capacitance reading greater than or equalto threshold value are determine, the method can proceed to block 1058.At block 1058, a step direction vector is calculated. For example, thestep direction vector can be calculated using method 1000. When the stepdirection vector is calculated method 1050 can proceed to block 1060.

At block 1060, the length of the direction vector is determined. If thelength of the direction vector is greater than zero, method 1050 canproceed to a block 1062. At block 1062, it is determined if a user hastaken a step. For example, an active sensor reading outside of thecenter zone can be a confirmation of a step. If it is determined a stepwas taken, method 1050 can proceed to a block 1080. At block 1080 thevelocity can be calculated. In an embodiment, the velocity can be avector which is the average of two-step direction vectors multiplied bythe step rate or speed. In the same embodiment, the magnitude of thevelocity vector is the user speed. A zero length vector can mean theuser is stopped. A vector length between 0 and 1 can mean the user iswalking or running. A vector length of 1 can mean the user is running.The velocity can be calculated, in an embodiment, using Equations(1)-(3).time=clamp(abs(timeStep[0]−timeStep[1]),minTime,maxTime)  Equation (1)speed=1.0f−(time−speedRunning)/(speedSlow−speedrunning)  Equation (2)vVelocity=normalize(vStep[0]+vStep[1])*speed  Equation (3)

Once the velocity is calculated at block 1080, the method can proceed toblock 1082 and end.

If at block 1062 a step was not taken, the method can proceed to block1064. At block 1064, a step is recorded. For example, the directionvector has a length greater than zero (block 1060) and the sensors incenter zone were zeroed out (block 1054), therefore a foot has moved tothe outer sensors. When a step is recorded, method 1050 can move toblock 1080 to calculate a velocity. Once the velocity is calculated atblock 1080.

If at block 1060, the length of the direction vector is equal to or lessthan zero, method 1050 can proceed to a block 1070. At block 1070, it isdetermined if a user has taken a step. For example, an active sensorreading outside of the center zone, a step has been taken. If it isdetermined a step was taken, method 1050 can proceed to a block 1072. Atblock 1072, the number of steps is incremented and a step variable isset to false. For example, there was in a step (foot in outer sensors)and now there is no foot detected in the outer sensors, thus step iscomplete. After the step is completed, method 1050 can proceed to block1080.

If at block 1070, a step was not taken, the method can proceed to block1074. At block 1074, it can be determined if step was too slow. In anembodiment, if a foot stayed in an outer zone of platform 170. In anembodiment, a step being too slow can be determined by subtracting thecurrent time from the previous step time and then determining if thecalculated value is greater or less than a step threshold value. If thestep is too slow then method 1050 can proceed to block 1076. At block1076, the steps values are reset. For example, number of steps, stepvector and step time can be set to zero. When the step values are set tozero method 1050 can proceed to block 1080. If at block 1074 a step wasnot too slow, method 1050 can proceed to block 1080.

FIGS. 46A, 46B, and 46C illustrate an example industrial omnidirectionallocomotion system. Industrial omnidirectional locomotion system 1100 cancomprise vertical supports 1101, horizontal struts 1102, halo 134,support members 1103 and 1104, platform 170, vertical poles 1105,springs 1106, ground supports 1107 and a linear ball bearing system (notshown).

Vertical supports 1101 can enable vertical movement of halo 134. In anembodiment, vertical supports 1101 can be hollow to enable entry ofhorizontal struts 1102 and coupling to vertical poles 1105 by a linearball bearing system. Vertical supports 1101 can be of variable length.Vertical supports 1101 can also include a protective covering. Theprotective covering can prevent foreign materials from entering thehollow portion of Vertical supports 1101 and thus prevent foreignmaterials from interfering with linear ball bearing system, pole 1105and springs 1106. For example, the protective covering can beoverlapping bristles. In an embodiment, the vertical supports 1101 arefar enough away from the center support to prevent interference with auser and any industrial gear, for example a gun, sword, baton, paddle,racquet. Vertical supports 1101 can keep vertical poles 1105, verticalfor example, 90 degree angle, to enable consistent vertical movementfrom the user. Horizontal struts 1102 extend from halo 134 and attachedto the vertical poles 1105 by a ball bearing system. The ball bearingsystem can enable vertical movement of halo 134. In another embodiment,horizontal struts 1102 can also extend at an acute angle, for example,75 degrees, 45 degrees, or any other angle less than 90 degrees, asshown in FIG. 46C. A more acute angle can enable an industrial userunobstructed use of an industrial firearm, for example pointing thebarrel on the gun towards the ground. In an embodiment, the ball bearingsystem can have greater than 5 inches of contact with the verticalpoles. The linear ball bearing system can comprise a linear ball bearingblock. The liner ball bearing system can enable a smoother movement ofthe struts 1102 along the vertical poles. Horizontal struts 1102 canextend from halo 134 in the same plane. Support members 1103 and 1104can add stability to vertical supports 1101. Ground support 1107 cansupport and stabilize industrial omnidirectional locomotion system 1100.

Springs 1106 can raise the halo 134 and struts 150 when a user is in thestanding position. Springs 1106 can provide support during forward usermovements. Springs 1106 can further compress enabling a user to crouch,and aid a user in standing, standing up from a crouch, or jumping byuncompressing. The spring constant can be calculated, in an embodiment,using Hooke's Law. The total force can be the weight of the halo can beadded to the upward force needed to provide stability for a user. Thestability can differ depending on the height of a user. The total forcecan be divided by the number of vertical supports. In an embodiment, thespring constant can be between 0.2 lb/in and 4.0 lb/in. In anotherembodiment, the spring constant can be between 0.4 lb/in and 2.0 lb/in.

In an embodiment, vertical supports can include telescoping poles. Inanother embodiment vertical supports are telescoping poles. For example,the height of the vertical supports/telescoping poles will be the sameheight as halo. The telescoping pole can enable a user to movevertically by compressing and extending in response to the user'smovements.

In an embodiment, the vertical supports can be a bungee cord orsuspended spring system. In this embodiment, a minimal resistance wouldbe applied to the halo when a user is in the crouch position. Upon auser moving to the stand position from the crouch position, theresistance on the halo would subside. In another embodiment, verticalmovement can be achieved by a pivot arm system. A pivot can be attachedto the struts on either the vertical support or the halo. Upon a usermoving to the crouch or stand position, the pivots can actuate enablingthe vertical movement of the user. In another embodiment, verticalmovement can be achieved by a magnetic levitation system. The struts canbe attached to the vertical support by magnets. The magnetic fieldcreated by the magnetic polarization can enable vertical movement. Inanother embodiment, vertical movement can be achieved by hydraulicactuation. The horizontal struts can be attached to the verticalsupports by hydraulics. Vertical movement of the user can be actuated bythe hydraulics. In another embodiment, vertical movement can be achievedby compressed gas. Vertical movement can be achieved by actuating aregulator causing the release and restriction of the flow of compressedgas.

FIG. 47 is a cross-sectional view illustrating a pulley braking systemof an industrial omnidirectional locomotion system. A pulley system 1120can connect a mass 1122 to a linear bearing system (not shown) by acable 1121. The mass 1122 can enable the linear bearing system to movevertically along a vertical pole 1105. The mass can provide a constantupward horizontal force to the horizontal struts 1102 and halo (notshown). The constant upward horizontal force can counteract the constantdownward force produced when a user is moving forward, for examplewalking or running. In the previous and subsequent embodiments, theforward force can also be a backward force, for example, a user walkingfor running backward.

FIG. 48 is a cross-sectional view illustrating a counter weight systembraking system of an industrial omnidirectional locomotion system. Acounterweight system can aid in preventing a user from falling. In anembodiment, the counterweight system can comprise vertical supports1101, vertical poles 1105, and one or more springs 1106 used to create arestorative force to resist horizontal force provided by the user. Thesprings 1106 can be placed underneath a linear bearing system (notshown). The springs 1106 can compress due to downward horizontal force,produced by a user forward movement, which can also produce a balancingupward force, for example if a user is walking or running.

FIG. 49 is a top view illustrating a frictional force braking system ofan industrial omnidirectional locomotion system. The forces produced bya forward movement of a user can be converted into a frictional forcethat can resist the vertical force of a falling user. The frictionalforce can counteract the constant downward force produced by a forwardmovement of a user, for example running. In an embodiment, thefrictional force is created by a frictional material 1123 internal tothe vertical supports 1101 and the bearing system (not shown). When auser moves forward the frictional material on the outside of the bearingsystem comes into contact with the frictional material internal to thehollow supports creating a frictional force.

FIG. 50 is a top view illustrating a circumferential spring brakingsystem of an industrial omnidirectional locomotion system. The linearball bearing system can be attached to the vertical pole by one or moresprings 1124. In an embodiment, four springs 1124 are set equidistantand creating a 90 degrees with the vertical pole 1105. When a forwardmovement is applied by the user to the horizontal strut 1102, thehorizontal force is transferred from the user through the horizontalstrut 1102 and to the springs 1124. When the springs compress, thefrictional material on the outside of the linear ball bearing system andinternal to the hollow support come into contact creating a frictionalforce. The frictional force can resist the downward force produced bythe forward movement of the user, preventing a fall. In anotherembodiment, the frictional force can come from the contact of the strutand the linear bearing system.

FIG. 51 illustrates a cable braking system of an industrialomnidirectional locomotion system. A cable braking system can be used toprevent a user from falling. The cable braking system can include brakes1127, brake cables 1125 that run along the horizontal struts 1102, and aball bearing sleeve 1126 which houses the bearing system. The forwardmovement of a user can create a horizontal force. The horizontal forcecan actuate and increase the tension on brake cables 1125 actuating thebrakes 1127. For example, the increased tension on the cable brakesystem can provide a frictional force along the vertical pole, resistingthe downward force produced by a user's forward movement, for examplewalking or running.

FIG. 52 illustrates a Pouch Attachment Ladder System (PALS) and amodular lightweight load-carrying equipment (MOLLE) harness connection.Standard industrial load bearing equipment can be integrated to theharness 120. In an embodiment, MOLLE personal protective equipment withPALS 1130 can be integrated, as shown in FIG. 52 . In another example, aMOLLE patrol pack with PALS can be integrated. The PALS system consistsof a webbing grid 1129 for connecting PALS compatible equipment. Anyother industrial gear or attire, for example, improved load bearingequipment (ILBE), can also be integrated into the locomotion systemharness. Harness 120 can have one or more PALS compatible straps 1128for integration with industrial equipment, for example MOLLE or ILBE.Compatible straps 1128 can be attached to the MOLLE person protectiveequipment 1130, the MOLLE patrol pack, the ILBE equipment by the PALSsystem.

Embodiments described herein comprise a combination of features andadvantages intended to address various shortcomings associated withcertain prior devices, systems, and methods. The foregoing has outlinedrather broadly the features and technical advantages of the invention inorder that the detailed description of the invention that follows may bebetter understood. The various characteristics described above, as wellas other features, will be readily apparent to those skilled in the artupon reading the detailed description, and by referring to theaccompanying drawings. It should be appreciated by those skilled in theart that the conception and the specific embodiments disclosed may bereadily utilized as a basis for modifying or designing other structuresfor carrying out the same purposes of the invention. It should also berealized by those skilled in the art that such equivalent constructionsdo not depart from the spirit and scope of the invention as set forth inthe appended claims.

Examples within the scope of the present disclosure can also includetangible and/or non-transitory computer-readable storage media forcarrying or having computer-executable instructions or data structuresstored thereon. Such non-transitory computer-readable storage media canbe any available media that can be accessed by a general purpose orspecial purpose computer, including the functional design of any specialpurpose processor as discussed above. By way of example, and notlimitation, such non-transitory computer-readable media can include RAM,ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storageor other magnetic storage devices, or any other medium which can beutilized to carry or store desired program code means in the form ofcomputer-executable instructions, data structures, or processor chipdesign. When information is transferred or provided over a network oranother communications connection (either hardwired, wireless, orcombination thereof) to a computer, the computer properly views theconnection as a computer-readable medium. Thus, any such connection isproperly termed a computer-readable medium. Combinations of the aboveshould also be included within the scope of the computer-readable media.

Computer-executable instructions include, for example, instructions anddata which cause a general purpose computer, special purpose computer,or special purpose processing device to perform a certain function orgroup of functions. Computer-executable instructions also includeprogram modules that are executed by computers in stand-alone or networkenvironments. Generally, program modules include routines, programs,components, data structures, objects, and the functions inherent in thedesign of special-purpose processors, etc. that perform particular tasksor implement particular abstract data types. Computer-executableinstructions, associated data structures, and program modules representexamples of the program code means for executing steps of the methodsdisclosed herein. The particular sequence of such executableinstructions or associated data structures represents examples ofcorresponding acts for implementing the functions described in suchsteps.

Those of skill in the art will appreciate that other examples of thedisclosure can be practiced in network computing environments with manytypes of computer system configurations, including personal computers,handheld devices, multi-processor systems, microprocessor-based orprogrammable consumer electronics, network PCs, minicomputers, mainframecomputers, and the like. Examples can also be practiced in distributedcomputing environments where tasks are performed by local and remoteprocessing devices that are linked (either by hardwired links, wirelesslinks, or by a combination thereof) through a communications network. Ina distributed computing environment, program modules can be located inboth local and remote memory storage devices.

The various examples described above are provided by way of illustrationonly and should not be construed to limit the scope of the disclosure.For example, the principles herein apply not only to a smartphone devicebut to other devices capable of detecting communications such as alaptop computer. Those skilled in the art will readily recognize variousmodifications and changes that can be made to the principles describedherein without following the example embodiments and applicationsillustrated and described herein, and without departing from the scopeof the disclosure.

We claim:
 1. A method of generating an input for controlling anapplication from movement within a concave platform of anomnidirectional locomotion system configured to support a user on theconcave platform, the method comprising: receiving, from at least two ormore sensors, movement data from movement within the concave platformconfigured to support the user on the concave platform; calculating, ata processor, a velocity from the movement data; calculating, at theprocessor, a heading from the movement data; translating, at theprocessor, the velocity and the heading into 2-dimensional Cartesiancoordinates at least one of a forward, backwards, or sideways movementinput values; normalizing, at the processor, the 2-dimensional Cartesiancoordinates at least one of a forward, backwards, or sideways movementinput values into a minimum to maximum scale range; and transmitting,the normalized coordinates movement input values as the input forcontrolling the application.
 2. The method of claim 1, wherein thevelocity is calculated by a distance a foot of a the user travelsdivided by the time it took to travel the distance.
 3. The method ofclaim 1, wherein the velocity is calculated by a pedometry rate.
 4. Themethod of claim 3, wherein the pedometry rate is determined bymonitoring a frequency of steps over a predefined interval.
 5. Themethod of claim 1, wherein the velocity is calculated by monitoring anacceleration of a foot of a the user.
 6. The method of claim 1, whereinthe velocity is calculated by normalizing an angular velocity.
 7. Themethod of claim 6, wherein the angular velocity is a change in rotationof a foot of a the user.
 8. The method of claim 1, further comprising:translating, at the processor, the heading relative to a real worldaxis.
 9. The method of claim 8, wherein the real world axis is magneticNorth.
 10. The method of claim 9, further comprising: calibrating, atthe processor, the magnetic North to an initial orientation of a theuser by an offset.
 11. The method of claim 1, further comprising:translating, at the processor, the heading relative to an orientation ofa torso of a the user.
 12. The method of claim 1, further comprising:translating, at the processor, the heading relative to an orientation ofa head of a the user.
 13. The method of claim 1, wherein the minimum tomaximum scale range is defined by gaming input descriptors.
 14. Themethod of claim 1, wherein a Y 2-dimensional Cartesian coordinate is forforward or backwards movement.
 15. The method of claim 1, wherein an X2-dimensional Cartesian coordinate is for sideways movement.
 16. Themethod of claim 1, where the two or more sensors are located within theconcave platform.
 17. The method of claim 1, where the two or moresensors are located outside the concave platform.
 18. The method ofclaim 1, where the two or more sensors are located under the concaveplatform.
 19. A system for generating an input for controlling anapplication from movement within a concave platform of anomnidirectional locomotion system configured to support a user on theconcave platform, the system comprising: at least one processor; and atleast one memory storing instructions, which when executed by the atleast one processor causes the at least one processor to: receive, fromat least two or more sensors, movement data from movement within theconcave platform configured to support the user; calculate a velocityfrom the movement data; calculate a heading from the movement data;translate the velocity and the heading into 2-dimensional Cartesiancoordinates at least one of a forward, backwards, or sideways movementinput values; normalize the 2-dimensional Cartesian coordinates at leastone of a forward, backwards, or sideways movement input values into aminimum to maximum scale range; and transmit the normalized coordinatesmovement input values as the input.
 20. The system of claim 19, whereinthe velocity is calculated by a distance a foot of a the user travelsdivided by the time it took to travel the distance.
 21. The system ofclaim 19, wherein the velocity is calculated by a pedometry rate. 22.The system of claim 21, wherein the pedometry rate is determined bymonitoring a frequency of steps over a predefined interval.
 23. Thesystem of claim 19, wherein the velocity is calculated by monitoring anacceleration of a foot of a the user.
 24. The system of claim 19,wherein the velocity is calculated by normalizing an angular velocity.25. The system of claim 24, wherein the angular velocity is a change inrotation of a foot of a the user.
 26. The system of claim 19, furthercomprising instructions, which when executed by the at least oneprocessor causes the at least one processor to translate the headingrelative to a real world axis.
 27. The system of claim 26, wherein thereal world axis is magnetic North.
 28. The system of claim 27, furthercomprising instructions, which when executed by the at least oneprocessor causes the at least one processor to calibrate the magneticNorth to an initial orientation of a the user by an offset.
 29. Thesystem of claim 19, further comprising instructions, which when executedby the at least one processor causes the at least one processor totranslate the heading relative to an orientation of a torso of a theuser.
 30. The system of claim 19, further comprising instructions, whichwhen executed by the at least one processor causes the at least oneprocessor to translate the heading relative to an orientation of a headof a the user.
 31. The system of claim 19, wherein the minimum tomaximum scale range is defined by gaming input descriptors.
 32. Thesystem of claim 19, wherein a Y 2-dimensional Cartesian coordinate isfor forward or backwards movement.
 33. The system of claim 19, whereinan X 2-dimensional Cartesian coordinate is for sideways movement. 34.The system of claim 19, where the two or more sensors are located withinthe concave platform.
 35. The system of claim 19, where the two or moresensors are located outside the concave platform.
 36. The system ofclaim 19, where the two or more sensors are located under the concaveplatform.
 37. A non-transitory computer readable medium storinginstructions, which when executed by at least one processor causes theat least one processor to: receive, from at least two or more sensors,movement data from movement within a concave platform of anomnidirectional locomotion system configured to support a user on theconcave platform; calculate a velocity from the movement data; calculatea heading from the movement data; translate the velocity and the headinginto 2-dimensional Cartesian coordinates at least one of a forward,backwards, or sideways movement input values; normalize the2-dimensional Cartesian coordinates at least one of a forward,backwards, or sideways movement input values into a minimum to maximumscale range; and transmit the normalized coordinates movement inputvalues as an input for controlling an application.
 38. Thenon-transitory computer readable medium of claim 37, wherein thevelocity is calculated by a distance a foot of a the user travelsdivided by the time it took to travel the distance.
 39. Thenon-transitory computer readable medium of claim 37, wherein thevelocity is calculated by a pedometry rate.
 40. The non-transitorycomputer readable medium of claim 39, wherein the pedometry rate isdetermined by monitoring a frequency of steps over a predefinedinterval.
 41. The non-transitory computer readable medium of claim 37,wherein the velocity is calculated by monitoring an acceleration of afoot of a the user.
 42. The non-transitory computer readable medium ofclaim 37, wherein the velocity is calculated by normalizing an angularvelocity.
 43. The non-transitory computer readable medium of claim 42,wherein the angular velocity is a change in rotation of a foot of a theuser.
 44. The non-transitory computer readable medium of claim 37,further comprising instructions, which when executed by the at least oneprocessor causes the at least one processor to translate the headingrelative to a real world axis.
 45. The non-transitory computer readablemedium of claim 44, wherein the real world axis is magnetic North. 46.The non-transitory computer readable medium of claim 45, furthercomprising instructions, which when executed by the at least oneprocessor causes the at least one processor to calibrate the magneticNorth to an initial orientation of a the user by an offset.
 47. Thenon-transitory computer readable medium of claim 37, further comprisinginstructions, which when executed by the at least one processor causesthe at least one processor to translate the heading relative to anorientation of a torso of a the user.
 48. The non-transitory computerreadable medium of claim 37, further comprising instructions, which whenexecuted by the at least one processor causes the at least one processorto translate the heading relative to an orientation of a head of a theuser.
 49. The non-transitory computer readable medium of claim 37,wherein the minimum to maximum scale range is defined by gaming inputdescriptors.
 50. The non-transitory computer readable medium of claim37, wherein a Y 2-dimensional Cartesian coordinate is for forward orbackwards movement.
 51. The non-transitory computer readable medium ofclaim 37, wherein an X 2-dimensional Cartesian coordinate is forsideways movement.
 52. The non-transitory computer readable medium ofclaim 37, where the two or more sensors are located within the concaveplatform.
 53. The non-transitory computer readable medium of claim 37,where the two or more sensors are located outside the concave platform.54. The non-transitory computer readable medium of claim 37, where thetwo or more sensors are located under the concave platform.